w_rcss的博客

想的太多

如何确保新生代对象被老年代对象引用的时候不被gc

stop-the-world:

Stop-the-world会在任何一种GC算法中发生。Stop-the-world意味着 JVM 因为要执行GC而停止了应用程序的执行。当Stop-the-world发生时,除了GC所需的线程以外,所有线程都处于等待状态,直到GC任务完成。GC优化很多时候就是指减少Stop-the-world发生的时间。

minor gc:发生在新生代的gc(minor:次要的)。
major gc:发生在老年代的gc(major:主要的)也叫full gc。

如何确保新生代对象被老年代引用的时候不被gc?(查询老年代对象来确认对新生代对象的引用避免误回收)
机制:当老年代存活对象多时,每次minor gc查询老年代所有对象影响gc效率(因为gc stop-the-world),所以在老年代有一个write barrier(写屏障)来管理的card table(卡表),card table存放了所有老年代对象对新生代对象的引用。
所以每次minor gc通过查询card table来避免查询整个老年代,以此来提高gc性能。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w_rcss/article/details/79946284
个人分类: java JVM
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

如何确保新生代对象被老年代对象引用的时候不被gc

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭