Production garbage collectors make substantial compromises in pursuit of reduced pause times. They require far more CPU cycles and memory than prior simpler collectors. concurrent copying collectors (C4, ZGC, and Shenandoah) suffer from the following design limitations. 1) Concurrent copying. They only reclaim memory by copying, which is inherently expensive with high memory bandwidth demands. Concurrent copying also requires expensive read and write barriers. 2) Scalability. They depend on tracing, which in the limit and in practice does not scale. 3) Immediacy. They do not reclaim older objects promptly, incurring high memory overheads. We present LXR, which takes a very different approach to optimizing responsiveness and throughput by minimizing concurrent collection work and overheads. 1) LXR reclaims most memory without any copying by using the Immix heap structure. It then combats fragmentation with limited judicious stop-the-world copying. 2) LXR uses reference counting to achieve both scalability and immediacy, promptly reclaiming young and old objects. It uses concurrent tracing as needed for identifying cyclic garbage. 3) To minimize pause times while allowing judicious copying of mature objects, LXR introduces remembered sets for reference counting and concurrent decrement processing. 4) LXR introduces a novel low-overhead write barrier that combines coalescing reference counting, concurrent tracing, and remembered set maintenance. The result is a collector with excellent responsiveness and throughput. On the widely-used Lucene search engine with a generously sized heap, LXR has 6x higher throughput while delivering 30x lower 99.9 percentile tail latency than the popular Shenandoah production collector in its default configuration.
翻译:生产垃圾收集器在减少暂停时间方面做出大量妥协。 它们需要的CPU周期和记忆比以往更简单的收藏器要多得多。 同时复制的收藏器(C4, ZGC, 和Shenandoah)受到以下设计限制的制约。 1 同步复制。 它们只通过复制恢复记忆记忆, 使用高记忆带宽要求, 这在本质上是昂贵的。 同时复制也需要昂贵的读写屏障。 缩放性。 它们依赖于追踪, 在限制和实践中, 无法扩大。 3 中间性。 它们不会迅速回收老旧的物品, 产生高记忆管理器。 我们介绍 LXR, 采用非常不同的方法, 优化反应和吞噬, 尽量减少同时收集和吞噬。 1 LXR 重新复制记忆, 使用Immix heap 结构来消除零碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎。 LLCR 10 使用快速解解解解解解解解解解解解, 解解解解解解解, 解解, 解解解解解解解解, 和老碎碎碎碎碎碎碎碎碎碎碎碎碎碎碎的解, 解, 解解解解解解解解解解解, 解解, 解, 解解, 解的解的解的解的解的解的解, 解, 解解, 解解解解解解解的解的解, 解, 解解, 解解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解的解, 的解的解的解, 的解, 的解的解的解的解的解的解, 的解的解的解的解的解的解的解的解的解的解。