(三) JVM的回收算法,多图解析JVM的三种回收算法的应用及分带垃圾回收

回收算法

1、标记清除

第一步,先对没有 GC Root 对象直接或间接引用的对象进行一个标记。

在这里插入图片描述

第二步,对标记的对象进行清除,并不是清零操作,而是将该区域内存的起始、截止地址放入一个空闲区域地址列表内,即可被重复利用。需要利用内存时就在空闲地址列表内使用即可。

在这里插入图片描述

优点:仅记录起始、截止地址,故而速度快。
缺点:记录的空间不连续,容易产生内存碎片。

2、标记整理

在这里插入图片描述

优点:无内存碎片,都是连续内存,有利于存储较大的对象。
缺点:牵扯内存移动,效率较低,速度慢

3、复制

第一步:将没有被 GC Root 直接或间接引用的对象进行一次垃圾标记。

在这里插入图片描述

第二步:将非垃圾对象整理到 TO 内存区内。

在这里插入图片描述

第三步:直接清除 FROM 内存区内的所有垃圾内存。

在这里插入图片描述

第四步:将 FROM 内存区和 TO 内存区进行交换,保证TO内存区始终为空闲空间。

在这里插入图片描述

优点:无内存碎片,效率相对较高。
缺点:需要双倍的内存空间。

分带垃圾回收

第一步:对象将会优先加入到新生代的伊甸园内存区中。

在这里插入图片描述

第二步:伊甸园占满了,触发 Minor GC 将伊甸园内有 GC Root 对象直接或间接引用的对象加入到幸存区 To 内并将该对象的寿命加一,后将伊甸园内的垃圾内存回收。

在这里插入图片描述

第三步:将幸存区 From 和幸存区 To 进行交换,保证幸存区 To 始终为空闲内存空间。

在这里插入图片描述

第四步:伊甸园又满了,触发第二次Minor GC 将伊甸园内有 GC Root 对象直接或间接引用的对象、幸存区 From 内非垃圾对象加入到幸存区 To 内并将该对象的寿命加一,后将伊甸园内的垃圾内存回收。

在这里插入图片描述

第五步:若在幸存区 From 的对象寿命达到 15 证明该对象价值较高,存储到老年代内。

在这里插入图片描述

第六步:当全部的内存代都已填满的时候,将触发一次 Full GC 清理全部内存代内的非 GC Root 对象直接或间接引用的对象。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值