能想到的原因有两个:
1. major gc使用的算法复杂度比minor gc高;
major gc 采取的是mark-sweept或者mark-conpact,minor gc也要标记,但minor gc是标记后复制。将要被复制到的survivor区又是一个连续的内存区。major gc的清除可能快一些,但是整理操作这个复杂度就要高很多了。
2.major gc要处理的对象要比minor gc的多。
新生代分配的对象大都是朝生夕死的,所以存活下来要复制的对象也不是很多。老年代里的对象都是大概率存活的,要整理数量就多。
现在内存那么便宜,老年代不用整理算法也换成复制算法,会不会更快一些。可能也是快不了多少的,因为主要原因还是老年代的存活的对象多。
本文探讨了Majorgc与Minorgc两种垃圾回收算法的区别。Majorgc采用标记-清除或标记-压缩算法,而Minorgc使用复制算法。由于老年代对象存活率较高,Majorgc处理的对象更多,导致其复杂度高于Minorgc。
1万+

被折叠的 条评论
为什么被折叠?



