欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > JVM垃圾回收算法有哪些

JVM垃圾回收算法有哪些

2025/3/26 12:24:38 来源:https://blog.csdn.net/weixin_62466605/article/details/146454535  浏览:    关键词:JVM垃圾回收算法有哪些

标记-清除算法:标记-清除算法分为"标记"和"清除"两个阶段,首先通过可达性分析,标记出所有需要回收的对象,然后统一回收所有被标记的对象。标记-清除算法有两个缺陷,一个是效率问题,标记和清除的过程效率都不高,另外一个就是,清除结束后会造成大量的碎片空间。有可能会造成在申请大块内存的时候因为没有足够的连续空间导致再次 GC。


复制算法:为了解决碎片空间的问题,出现了"复制算法"。复制算法的原理是,将内存分成两块,每次申请内存时都使用其中的一块,当内存不够时,将这一块内存中所有存活的复制到另一块上。然后将然后再把已使用的内存整个清理掉。复制算法解决了空间碎片的问题。但是也带来了新的问题。因为每次在申请内存时,都只能使用一半的内存空间。内存利用率严重不足。


标记-整理算法:复制算法在GC 之后存活对象较少的情况下效率比较高,但如果存活对象比较多时,会执行较多的复制操作,效率就会下降。而老年代的对象在GC 之后的存活率就比较高,所以就有人提出了"标记-整理算法"。标记-整理算法的"标记"过程与"标记-清除算法"的标记过程一致,但标记之后不会直接清理。而是将所有存活对象都移动到内存的一端。移动结束后直接清理掉剩余部分。


分代回收算法:分代收集是将内存划分成了新生代和老年代。分配的依据是对象的生存周期,或者说经历过的GC 次数。对象创建时,一般在新生代申请内存,当经历一次GC 之后如果对还存活,那么对象的年龄+1。当年龄超过一定值(默认是 15,可以通过参数-XX:MaxTenuringThreshold 来设定)后,如果对象还存活,那么该对象会进入老年代。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com