栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java gc算法有几个

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java gc算法有几个

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.标记-清除算法

sun前期版本就是用这个技术。

第一阶段:从引用根节点开始标记所有被引用的对象,

第二阶段:遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,并且会产生内存碎片。

2.复制算法

该算法将内存平均分成两部分,然后每次只使用其中的一部分,当这部分内存满的时候,将内存中所有存活的对象复制到另一个内存中,然后将之前的内存清空,只使用这部分内存,循环下去。

注意:

这个算法与标记-整理算法的区别在于,该算法不是在同一个区域复制,而是将所有存活的对象复制到另一个区域内。

优点:

实现简单;不产生内存碎片

缺点:

每次运行,总有一半内存是空的,导致可使用的内存空间只有原来的一半。

3.标记整理算法

标记-整理算法结合了“标记-清除”和“复制”两个算法的优点。也是分两阶段,

第一阶段从根节点开始标记所有被引用对象,

第二阶段遍历整个堆,清除未标记对象并且把存活对象“压缩”到堆的其中一块,按顺序排放。此算法避免了“标记-清除”的碎片问题,同时也避免了“复制”算法的空间问题。

4.引用计数

此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。

缺点:无法处理循环引用的问题。如:  对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是引用计数算法却无法回收他们。

5.分代

J2SE1.2以后使用此算法

基于对象生命周期分析得出的垃圾回收算法。把对象分为年轻代、年老代、持久代,对不同的生命周期使用不同的算法(2-3方法中的一个即4自适应)进行回收。

以上就是java中gc算法的基本介绍,对于上面的六种方法,我们需要牢固掌握的是前三种,后面两种引用和分代可以做一个了解。关于更多GC算法的使用,大家可以在课后查阅资料。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/15130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号