JVM-垃圾回收算法

跟踪收集器

跟踪收集器采用集中式的管理方式,全局记录每个对象的引用状态,执行时,把一系列GC Root对象作为起点,向下搜索引用链,如果一个对象到GC Root之间没有任何引用链,那么这个对象就可以被回收。

此类回收算法有三种:标记-清除、标记-复制和标记-整理。

标记-清除

标记清除是最基本的收集算法,其他算法都是以这种思想为基础。标记-清除算法分为两个节点:标记和清除。首选标记出需要回收的对象,然后对这些对象同一清除。

缺点:标记和清除的执行效率不高。会产生很多不连续的内存碎片。

这里写图片描述
这里写图片描述

标记-复制

这种算法首先将可用内存空间分为两块,一次只使用一块,使用完之后,会将存活的对象复制到另一块中,然后对使用过的内存统一清除,这样就使得每次只对一块内存进行回收,不会产生内存碎片。

缺点:可用内存会变为原来的一半。

这里写图片描述
这里写图片描述

标记整理

标记-整理中标记的过程和标记-清除算法相同,而后续操作不只是清除被标记的对象,同时还会将存活的对象移动到内存的一端,并更新引用对象的指针,所以,不会产生内存碎片。

缺点:执行效率不高。

这里写图片描述
这里写图片描述

引用计数回收器

引用计数回收器采用分散式的管理方式,通过计数器记录对象是否被引用,当计数器为0时说明此对象不再被使用,可以被回收。

缺点:不能回收循环引用的无用对象。
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值