1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Java 年轻代 年老代 GC

Java 年轻代 年老代 GC

时间:2024-06-16 22:43:50

相关推荐

Java 年轻代 年老代 GC

一篇关于gc的文章

/hnrainll/archive//11/06/3410042.html

自己的笔记:

JVM是用c语言写的。一般说的JVM是HotSpot。

GC是垃圾回收的意思。

Java的GC对不同存活时长的对象才用不同的回收策略。

存活时间短的对象使用新生代存储,存活时间长的对象使用年老代存储。

一般情况下,一个对象刚创建的时候被存放在年轻代,在年轻代经过几次gc后仍然存活,则进入年老代。特殊情况下:如果一个对象很大,也可以直接进入年老代。有的建议说需要避免创建大的对象。年老代的空间很大,当一个大的对象在老年代gc的时候,会引发整个年老代的gc。对于年老代引用年轻代对象的情况,年老代中会维护一个大小为512byte的card table。年轻代gc的时候可以查询这里,而不用查询全部年老代。

年轻代的gc策略是:停止复制清理法。年轻代具体分为伊甸区、存活区0,存活区1;gc时候将仍然存活的对象放入一个存活区中,清空另一个存活区和伊甸园区。如果某个对象经过了n次gc依然存活,或者存活的对象超过了存活区的容量,就会发生从年轻代到年老代的复制。 停止复制清理法需要在回收前停止其他所有线程的执行,这是新生代收集器优化的重点(垃圾收集器是gc的具体实现)。

年老代的gc策略是:标记整理法。年老代的容量很大,使用停止复制法的话,效率会比较低。标记整理法,是先标记存活的对象,然后把这些对象在向一段移动,保证内存的连续。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。