JVM垃圾回收算法是什么

发布时间:2023-04-27 17:28:32 作者:iii
来源:亿速云 阅读:131

这篇“JVM垃圾回收算法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JVM垃圾回收算法是什么”文章吧。

标记-清除(Mark-Sweep)算法

标记-清除(Mark-Sweep)算法是最早出现也是最基础的垃圾收集算法。顾名思义,标记-清除算法分为两个阶段:

JVM垃圾回收算法是什么

优点:

缺点:

复制(Copying)算法

为了解决标记-清除算法面对大量可回收对象时执行效率低的问题,于是有了复制(Copying)算法。复制算法是将内存一分为二,当一块内存使用完成之后,会将存活的对象移动到另一块预留未使用的内存空间,然后将使用过的那块内存空间清理掉。

JVM垃圾回收算法是什么

优点:

缺点:

Appel 式回收

在1989年,Andrew Appel针对具备“朝生夕灭”特点的对象,提出了一种更优化的半区复制分代策略,现在称为“Appel式回收”。具体做法是分配一块较大的Eden区和两块较小的Survivor区(可以叫做From区和To区,也可以叫做Survivor1区和Survivor2区)。

JVM垃圾回收算法是什么

研究表明,新生代中的对象98%是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块 Survivor空间。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor空间上,最后清理掉Eden和已经用过的Survivor空间。也就是说,浪费的空间只有一个Survivor空间。

HotSpot虚拟机新生代比例Eden和Survivor空间比例为8:1:1,在使用的时候只使用Eden区和一个Survivor区,也就是说,新生代有90%的空间是在使用的,只有10%的空间是浪费的。新生代中98%的对象可被回收仅仅是“普通场景”下测得的数据,任何人都没有办法百分百保证每次回收都只有不多于10%的对象存活,因此,在Survivor空间不足的情况下,就需要依赖其他内存进行分配担保(Handle Promotion),一般是老年代。就是说如果Survivor空间不足,对象就需要以分配担保的形式进入老年代。

标记-整理(Mark-Compact)算法

标记-整理算法首先标记出所有需要回收的对象,在标记完成后,后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

JVM垃圾回收算法是什么

优点:

缺点:

标记整理与标记清除算法的区别主要也在于对象的移动。

以上就是关于“JVM垃圾回收算法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

推荐阅读:
  1. JVM垃圾回收算法解析
  2. JVM垃圾回收的原理是什么

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

jvm

上一篇:Go的面向对象编程怎么应用

下一篇:stats.js使用性能监控源码分析

相关阅读

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

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