【发布时间】:2017-03-05 04:01:47
【问题描述】:
在收集年轻代内存时,JVM 收集器仅扫描属于年轻代的那些根对象(堆中的对象可直接从根集访问),并使用写屏障支持的卡表/记忆集来确定区域可能包含包含对年轻代中对象的引用的对象。
我的问题是,如果年轻收集器确定年轻代中的特定对象仅具有来自老一代对象的单个外部引用,它如何知道老一代对象本身是否不是垃圾,因此使年轻代对象“活”并且不符合收集条件?例如,可能存在从根集直接到老年代中该对象的路径,而该路径又引用了所述年轻代对象。 年轻收集器通常认为这个年轻代对象是活的,还是它在决定忽略/收集它之前如何确定指向它的年老代对象是否是活的/垃圾?
【问题讨论】:
标签: java performance garbage-collection jvm