Garbage collection

  • Lua uses garbage collection.
    • It uses a mark and sweep garbage collector
    • The collector as of version 5.0 runs interleaved with the interpreter

Mark and Sweep

Mark and sweep performs garbage collection is three stages: mark, cleaning, and sweep
Mark - all reachable objects are marked as alive
Cleaning - Looks at all objects with a finalizer looking for non-marked objects.  These
    are put into a separate list to be handled.  It also looks at all weak tables and
    eliminates any entries that are not marked.  Weak tables are discussed below
Sweep - all objects are sweeped and those not marked are collected.  Lua also calls
    the finalizers of any objects put in the finalizer list
```