This video starts with a description of “Shadow Objects,” objects for which a newer version has been saved in a later transaction. Then we move to the nine steps of repository-wide garbage collection:

  1. Mark/sweep (to identify live objects);
  2. Object table sweep (to create a list of possible dead);
  3. Record possible dead;
  4. Voting on possible dead by current gems;
  5. Finalize voting (on behalf of recent commits);
  6. Read possible dead objects (cleanup);
  7. Promote to dead (transition);
  8. Dead object reclamation; and
  9. Return of pages and object IDs to the free pool.

Understanding these steps and being able to identify where we are in the process is very important to managing a production database since GC may require significant resources.