小垃圾收集被认为是非常有效的,因为它不会扫描老一代。
小型垃圾收集如何检测到,在没有扫描的情况下,从长期存储或永久存储中没有对年轻对象的引用?
发布于 2013-11-11 04:19:37
看看理解JVM中的GC暂停,HotSpot的小GC,本文将给您详细解释年轻的GC机制,并在HotSpot JVM中编写障碍。
简而言之,老一代不会被跳过。所有从旧到新的引用都被视为年轻空间GC的根(同样,从新到旧的所有引用都被认为是旧空间GC的根)。诀窍是写屏障只允许扫描旧空间的很小一部分,以找到所有对年轻空间的引用。
发布于 2013-11-09 16:26:10
在执行时,运行在引用赋值上的小部分代码(称为写屏障)记录这样的从旧到年轻的引用(或者是特定的对象,或者是堆的小子区域,以节省空间)。一个次要的GC确实查看那些(罕见的)旧对象,它只是跳过那些已知不包含年轻引用的对象。
https://stackoverflow.com/questions/19878102
复制相似问题