Summary
In this chapter, we have seen how the GC of the heap works in more depth. Objects on the heap are eligible for GC when they don’t have a connection to the stack anymore, whether directly or indirectly.
The garbage collector determines which objects are eligible for GC in the marking phase. Objects that have a connection to the stack are marked. The objects that are eligible for GC are unmarked.
After this marking phase, the actual removal happens in the sweeping phase. We discussed three kinds of sweeping, normal sweeping, sweeping with compacting, and sweeping with copying.
Then, we discussed the different implementations of the garbage collectors. A subset of them are the generational garbage collectors. These garbage collectors focus on one of the generations of the heap and, consequently, do not need to scan all the objects of the heap during the marking phase. After that, we discussed five common implementations of the garbage collector.
In the next...