作者:泉水叮咚139 | 来源:互联网 | 2023-09-16 15:15
image.png
image.png
一、回收类型
image.png
image.png
下面我对照着上面的图然后用大白话来讲一讲对象分配过程:
1.首
一、回收类型
下面我对照着上面的图然后用大白话来讲一讲对象分配过程:
1.首先java对象会存放在Eden区,然后如果这个区满了之后就会触发一次垃圾回收,会把存活的对象放在存活区的from survivor或者to survivor,而存活区就使用了复制算法,如果这次存货对象放在了from,那么下一次就会把from内的对象放在to中,然后清理from的,然后下一次互换。
2.然后这么周而复始的,每个对象如果度过了一次垃圾回收,他的年龄就会增加1,如果他的年龄达到了默认的阈值15的话,那么他就会晋升到老年代,而老年代这个内存一般会使用标记清理或者标记清除算法。
注意:这个对象分配过程是典型的对象分配过程,实际中未必是按照这个流程走:
1.新建的对象未必会分配到eden区
这样是针对一些大对象,例如数组之类的,如果这么大的对象还存活在eden区的话,那么在survivor区域复制来复制去的,必然造成效率的低下。
例如年龄为9的对象大小已经超过survivor空间的一半了,那么9以及9以上的对象都会直接进入老年代。