Most developers take automatic garbage collection for granted. It’s just another amazing feature provided by our language run-times to make our jobs easier. But if you try to peek inside a modern garbage collector, it’s very difficult to see how they actually work. There are thousands of implementation details that will confuse you unless you already have a good understanding of what it’s trying t