温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JVM垃圾回收算法解析

发布时间:2020-05-27 08:52:31 来源:网络 阅读:219 作者:柯之梦 栏目:软件技术

JVM垃圾回收算法解析

标记-清除算法

 该算法为最基础的算法。它分为标记和清除两个阶段,首先标记出需要回收的对象,在标记结束后,统一回收。该算法存在两个问题:一是效率问题,标记和清除过程效率都不太高,二是空间问题,在执行一次清除操作后,会存在好多不连续的内存碎片,从而造成资源的浪费。空间碎片太多将会导致,当在程序运行过程中,需要分配较大对象的时候无法找到足够的连续内存将会导致下一次垃圾收集操作。

复制算法

该算法是在标记-清除算法的基础上出现的,它主要是为了提高效率,它将内存区域分为两个相等的块,每次只使用其中的一块,当一块用完了,就将还存活着的对象移动到另外一块上,然后将已存在的对象所占用的内存释放掉,这样只是把其中的一块内存释放掉,也不存在内存碎片的问题,但这种的算法的效率是建立在缩小内存为原来的50%的前提上,它是用空间换空间来获取的。

标记-整理算法

复制算法存在一个问题,当对象存活率较高时,它会频繁的进行复制操作,这样也会导致效率低下。标记-整理算法在前两个算法的基础上出现,它的标记过程和标记-清除算法过程是一样,只是它没有对可回收的对象进行回收,而是让所有存活的对象向一测移动,然后清除掉边界以外的内存。

分代收集算法

当前商业虚拟机的垃圾收集都采用分代收集算法,它是根据对象的生存周期将内存分为几部分,它一般分为新生代和老生代,在新生代,如果发现新生代中发现有大批对象死亡,少量对象存活,则采用复制算法,只需要牺牲少量的复制成本就可以完成本次垃圾收集,而老生代因为对象存活率,没有多余的空间为其做担保,一般会使用标记-清除算法或标记-整理算法进行处理。

作者:柯之梦
来源:CSDN
原文:https://blog.csdn.net/yin4302008/article/details/85997091
版权声明:本文为博主原创文章,转载请附上博文链接!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI