Thanks for the link to this post! I want to know if garbage collection could be done in "all-or-nothing" fashion. When you collect you simply increment the "generation counter". Since all data is tagged with a "generation" you can with one assignment collect everything. Could this work or is it completely not useful? I would like to make an efficient garbage collector if possible when I have learned more.