java的GC垃圾回收算法区别-创新互联

四大算法

JVM在进行GC时,并不是对三个区域统一回收,大部分时候都是新生代(伊甸园和幸存区)

创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目成都做网站、网站建设、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元博兴做网站,已为上家服务,为博兴各地企业和个人服务,联系电话:13518219792

● 伊甸园

● 幸存区(form to)

● 老年区

一、引用计数 1.概念

● 将被引用的对象进行标记,引用多次就递增,最后标记为0的对象清除

2.优点

● 实现简单,判定效率高

3.缺点

● 本身有消耗(方法要有计数的变量,引用计数器改变计数)

● 难以解决对象之间相互循环引用的问题;对象objA和objB都有字段 instance , 赋值令objA.instance=objB及objB.instance=objA ,互相引用,导致引用计数不为0

二、复制算法 1.概念

● 每次GC都会将Eden活着的对象移到幸存区,

● 幸存区中将from中存活的对象放到to。

● 一个对象经历了15GC(可修改),放到老年代

● 复制算法最佳使用场景:新生区对象存活都较低

2.优点

● 没有内存的碎片

3.缺点

● 浪费了幸存区to一半的内存空间。假如说对象100%存活,数据每一次复制都需要成本

三、标记清除算法 1.概念

● 第一次对活着的对象标记

● 第二次清除没被标记的对象

2.优点

● 对比复制算法,不需要额外的空间

3.缺点

● 两次扫描浪费时间,会产生内存碎片

四、标记清除压缩(标记压缩、标记整理) 1.概念

● 先标记清除,然后将内存碎片进行整理

2.优点

● 不会产生内存碎片

3.缺点

● 相比标记清除,又增加了一步扫描

4.优化

● 多次GC清除后再进行一次压缩,避免每次清除每次压缩,即标记清除+标记清除压缩

五、算法总结

● 内存效率:复制算法>标记清除算法>标记压缩算法 (时间复杂度)

● 内存整齐度:复制算法=标记压缩算法>标记清除算法

● 内存利用率:标记清除算法=标记压缩算法>复制算法

PS:没有最好的算法,但是有最合适的 ——>GC:分代收集算法

● 年轻代:存活率低 复制算法

● 老年代:存活率大 标记清除(内存碎片不是很多)+标记压缩混合 实现

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:java的GC垃圾回收算法区别-创新互联
浏览路径:http://myzitong.com/article/hsgoc.html