目录
分代回收算法
在Java8中,对被分为了两份:新生代和老年代(1:2的比例)、
如下图
对于新生代,内部又被分为三个区域
1.伊甸区Eden,新生的对象都分配在这里
2.幸存者区servivor(from和to)
3.Eden区,from区,to区(8:1:1)
工作机制
如下图
1.新创建的对象,都会先分配到Eden区
2.当Eden区内存不足,标记Eden与from(现在阶段是没有的)的存活对象
3.将存活对象采用元复制算法复制到to中,复制完毕后,Eden和from内存都得到释放
如下图
假如Eden区分配内存又出现不足
这时会标记出Eden区的存活对象,存活对象和to区的存活对象一起复制到from区,然后释放,如下图
如果from中的A对象一直存活,超过了15次的垃圾回送都没有被释放掉的话,那么A对象会被复制到Old区
MinorGC,MixedGC,FullGC
MinorGC(youngGC)发生在新生代的垃圾回收,暂停时间短(STW)
MixedGC新生代和老年代步分区域的垃圾回收,G1收集器持有
FullGC:新生代和老年代完整垃圾回收,内存严重不足时,暂停时间长(STW)应尽力避免
STW:暂停所有应用程序线程,等待垃圾回收完成。