【发布时间】:2018-05-10 06:58:52
【问题描述】:
你能回答我一个关于 JVM 垃圾收集过程的问题吗?
为什么堆分为伊甸园、幸存者空间和老年代?
在处理年轻疏散时,通过从根开始的引用访问对象以找出无法访问的对象。可达对象被标记为“活动”,不可达对象不被标记,将被淘汰。
因此,考虑 ALL 个对象,包括在老年代分配的对象,如果它们可达,也会被访问和标记。
据我了解,一次回收年轻代和老一代要求很高,因为这些代位于内存的不同连续部分。
但是,即使在 Young 疏散级别上进行了最简单的标记之后,如果所有可到达和不可到达的对象都已知并且可以删除,那么为什么我们需要这种划分?
我也知道弱代际假设,但为什么我们需要分裂?
【问题讨论】:
标签: java garbage-collection jvm heap-memory g1gc