Java垃圾收集器被称为分 代垃圾收集器
。应用程序中的对象生存的时间长短不一,具体取决于它们的创建位置和使用方式。此处的主要见解在于,针对短期和长期对象使用不同的垃圾回收策略,可以针对每种情况专门优化GC。
松散地说,当对象在新 世代中 “生存”重复的垃圾回收时,它们将迁移到 终身代 。该 永久代
是一个特例,它包含对象,是由JVM需要的,这不一定是在你的程序来表示,代表的类和方法的示例对象。
由于“ 年轻一代” 通常会包含很多垃圾,因此已对其进行了优化,可以一次清除很多未使用的对象。由于 Tenured Generation
包含寿命更长的对象,因此已针对快速垃圾回收进行了优化,而不会浪费大量内存。
随着垃圾收集技术的改进,细节变得非常复杂,并且取决于您的JVM及其配置方式。如果您需要确切了解正在发生的事情,则应该阅读所使用的特定JVM
的文档。
就是说,有一个简单的历史安排,在概念上仍然有用。从历史上看, 年轻一代 将是一个
抄袭者 , 终身一代 将是一个
记号和打扫者 。一个 副本收集
基本支付摆脱垃圾没有CPU成本,大部分的成本是保持活动对象,这种效率的价格是较重的内存使用情况。一个 标记和清除收集
支付一些CPU成本现场和未使用的对象,但更有效地利用内存。



