244. Handling the garbage collector stages
During its work, GC passes through different stages or steps. It can pass through one or more of the following stages:
- Mark – In this stage, the GC identifies and marks (or paints) all pieces of memory (blocks) that are used (have references) and not used (have no references). The marked (painted) blocks are called live objects, while the rest are called non-live objects. Imagine that you go to the pantry and identify all the fresh fruits and vegetables and separate them from the spoiled ones.
- Sweep – In this stage, the GC removes all non-live objects from memory. Next, you take all the spoiled fruits and vegetables out of the pantry and throw them away.
- Compact – In this stage, the GC attempts to group the live objects closer together – in other words, it arranges the live objects at the start of the heap in a continuous sequence of memory blocks. So, compacting involves defragmentation...