A New Age of JVM Garbage Collectors - Alexander Yakushev

Discover the latest advancements in JVM garbage collectors, including Shenandoah, G1, and ARC, as Alexander Yakushev discusses their benefits and challenges in improving throughput and reducing pauses.

Key takeaways
  • Shenandoah GC tries to slow down the application gradually, requiring tracking of allocation rate.
  • Eden and survivor spaces are managed by evacuating GC, which packs objects efficiently.
  • GC introduces pauses, which can be mitigated by concurrent marking and compaction.
  • Shenandoah has two phases: concurrent marking and evacuation.
  • ARC (Automatic Reference Counting) is a strategy to reduce noise in tracing GC.
  • Shenandoah introduces fast allocations and reduces fragmentation.
  • G1 GC is an example of a tracing GC, which tries to understand the object graph.
  • Garbage collector should not start prematurely, as it can cause exceptions.
  • Manual memory management can achieve lowest possible latency.
  • Shenandoah still has some pauses, but they are consistent and predictable.
  • Shenandoah’s concurrent marking phase is critical, as it allows for efficient allocation.
  • ARC can introduce noise in tracing GC, while Shenandoah’s evacuation phase helps reduce noise.
  • Shenandoah’s GC aims to minimize pauses while providing fast allocations and efficient compaction.
  • ARC uses reference counts to track objects and reduce noise.
  • Shenandoah’s GC is designed to handle large heaps and provide fast allocations.
  • CPUs are not designed for memory access, whereas Shenandoah’s GC tries to minimize memory access.
  • ARC can cause problems due to its use of manual memory management.
  • Shenandoah’s GC is designed to improve throughput and reduce pauses.
  • ARC can reduce noise in tracing GC, but may not always be effective.