【JVM】GC垃圾回收

JVM在进行GC时,并不是新生代、老年代一起进行,大部分都是在新生代中回收,GC又分为Minor GC和Major GC。

Minor GC 和 Major GC 区别

Minor GC:
只针对新生代区域,指的是发生在新生代中的垃圾收集,由于大多数对象存活率不高,所有Minor GC非常频繁,回收速度快。


Major GC: 指的是发生在老年代的垃圾收集,出现Major GC时,经常会伴随至少一次的Minor GC。Major GC扫描空间较大,速度较慢。
GC四大算法

1.引用计数法(一般不使用):

使用该方法进行GC时,每个对象中会携带一个引用计数器,每当对象被引用就+1,结束引用就-1。直到对象的引用计数器为0,说明该对象没有被使用,回收对象。

缺点:每次对象赋值时需要维护引用计数器;较难处理循环引用。


2.复制算法(From、To):

复制算法在年轻代中使用,基本思想是将内存分成两块,每次只用其中一块,当一块内存用完,将活着的对象复制到另一个块上。

优点:速度快,不会产生内存碎片。
缺点:消耗内存空间。


3.标记清除:

标记清除发生在老年代,分成标记和清楚两个阶段,先标记出需要回收的对象,然后统一进行回收。

优点:不需要额外空间。
缺点:两次扫描,耗时,会产生内存碎片。


4.标记压缩:

标记压缩发生在老年代,一般是由标记清楚与标记整理混合实现。首先与标记清除相同, 回收后再次扫描,整理存活对象。

优点:不会产生内存碎片。
缺点:需要移动存活对象,消耗成本,耗时。


没有最好的垃圾回收算法,只有最合适的,在不同代中使用不同垃圾回收算法,也称分代收集算法。

内存效率:复制算法>标记清除算法>标记整理算法
内存整齐度:复制算法=标记整理算法>标记清除算法
内存利用率:标记整理算法=标记清除算法>复制算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值