Garbage Collection

Fundamentals

Algorithm

  • Generational hypothesis

    • It's faster to compact the memory for a portion of the managed heap than for the entire managed heap.

    • Newer objects have shorter lifetimes, and older objects have longer lifetimes.

    • Newer objects tend to be related to each other and accessed by the application around the same time.

    • A generational garbage collector logically separates the heap into 2 generations: a young generation and an old generation. When an object is allocated, it is initially placed into the young generation, which is frequently scanned. If an object survives long enough, it will be promoted to the old generation.

      Generational garbage collectors perform this behavior to take advantage of the weak-generational hypothesis, which posits that most objects become unreachable shortly after they are created.

  • Minor GC

    • occurs in the young generation.
    • triggered when the young generation fills up.
    • usually fast because it only collects the young generation.
  • Major GC

    • occurs in the old generation.
    • triggered when the old generation fills up.
    • usually slow because it collects the old generation.
  • Stop the world event

    • When a garbage collection stops all application threads.