Cam*_*zie 5 java garbage-collection jvm jvm-hotspot
在阅读有关 ZGC 的文章时,我注意到它吹嘘自己是“单代垃圾收集器”,但我很少看到有关该术语确切含义的任何详细信息。
我熟悉伊甸园、幸存者空间、托儿所、临终关怀、元空间、permgen、僵尸对象、诺亚方舟和老年之家,所以我不需要解释并发标记清除(CMS GC)或垃圾优先(G1 GC)算法有效。我的理解是,这些都是多代人的,我对此很满意。
就我个人而言,我一直喜欢能够通过 Java Mission Control 并查看对象经历了多少代 GC 周期。这对于解决内存泄漏或 GC 问题总是很有帮助。
那么“单代”垃圾收集器到底是什么?它与当前在 CMS 和 G1 中通过多个垃圾收集周期跟踪对象的方式有何不同?
ZGC 有很多值得夸耀的地方,但单代并不是其中之一。
\n计划增加多代作为未来的改进。
\n一些垃圾收集器实现区分新对象和旧对象,\xe2\x80\x9cyoung Generation\xe2\x80\x9d 与 \xe2\x80\x9cold Generation\xe2\x80\x9d。目标是让程序员更便宜地创建短期对象,因为它们将被更快、更有效地处理以释放内存。
\nZGC并不认为是单代的。恰恰相反,该团队表示希望在 ZGC 的未来版本中添加分代功能。请参阅 Oracle 的 Per Liden 演讲的本节中的讨论(请等待几秒钟以查看新幻灯片 \xe2\x80\x9cGenerational ZGC\xe2\x80\x9d):https: //youtu.be/88E86quLmQA
\n有关世代的更多信息,请参阅此问题:Java 堆术语:年轻世代、老世代和永久世代?
\n