(三)java虚拟机——垃圾回收算法

常用的垃圾回收方法有:
引用计数法、标记清除法、复制算法、标记压缩法、 分代算法、分区算法

引用计数法

思想:引用一个对象,则引用计数器+1;引用失效,则引用-1;回收计数为0的对象
缺点:(1)没法处理相互引用的对象(实际上这些对象需要被回收却没法回收,但是他们相互引用,计数不为0)(2)频繁的+1,-1对系统性能有影响

标记清除法

思想:标记阶段:标记从根节点开始的所有可达对象;清除阶段:清除所有未被标记的对象
缺点:产生空间碎片,回收后的空间是不连续的,造成之后的工作效率低

复制算法

思想:内存分2块,将正在使用的那块内存中存活的对象复制到另外未使用的内存的一边,清除其他对象(建立在存活对象少,垃圾多的前提)
优点:不产生空间碎片
缺点:内存折半
适用:复制算法比较适合新生代,因为垃圾对象通常多于存活对象(需要复制的存活对象少,成本低),效果好。

标记压缩法

思想:是一种老年代的回收算法,标记从根节点开始的所有可达对象,将存活的对象压缩到内存的一端,清除其他对象
优点:避免产生碎片和内存折半

分代算法

思想:根据每块内存区间选择以上合适的算法

分区算法

思想:根据对象生命周期长短划分两部分,将整个堆划分成连续的不同小区间
避免因为堆空间越大,GC停顿时间越长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值