为什么major gc要比minor gc慢很多

能想到的原因有两个:

1. major gc使用的算法复杂度比minor gc高;

major gc 采取的是mark-sweept或者mark-conpact,minor gc也要标记,但minor gc是标记后复制。将要被复制到的survivor区又是一个连续的内存区。major gc的清除可能快一些,但是整理操作这个复杂度就要高很多了。

2.major gc要处理的对象要比minor gc的多。

新生代分配的对象大都是朝生夕死的,所以存活下来要复制的对象也不是很多。老年代里的对象都是大概率存活的,要整理数量就多。

现在内存那么便宜,老年代不用整理算法也换成复制算法,会不会更快一些。可能也是快不了多少的,因为主要原因还是老年代的存活的对象多。

猜你喜欢

转载自heiliguai.iteye.com/blog/2356384
今日推荐