JVM的垃圾回收算法--有哪些垃圾回收算法?哪些垃圾收集器?

三大假说

  1. 弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的。
  2. 强分代假说(Strong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以消亡。
  3. 跨代引用假说(Intergenerational Reference Hypothesis):跨代引用相对于同代引用来说仅占极少数。

垃圾收集器

垃圾收集器:新生代收集器,老年代收集器,混合收集器

部分收集(Partial GC):指目标不是完整收集整个Java堆的垃圾收集,其中又分为:

  • 新生代收集(Minor GC/Young GC):指目标只是新生代的垃圾收集。
  • 老年代收集(Major GC/Old GC):指目标只是老年代的垃圾收集。目前只有CMS收集器会有单独收集老年代的行为。
  • 混合收集(Mixed GC):指目标是收集整个新生代以及部分老年代的垃圾收集。目前只有G1收集器会有这种行为。

当前我们使用的就是G1收集器。

G1收集器是分区域收集垃圾,不会一下停止所有的操作。但是仍然会对回收的那部分产生影响,我们无法做到不产生影响。只能缩小影响。我们之所以考虑那么多中收集器和垃圾回收算法都是为了减小影响。使其在垃圾回收的时候和其他线程的冲突尽可能降低。

垃圾回收算法

  • 标记清除法:第一遍先把把死亡的对象进行标记,然后第二遍去删除掉标记的对象。缺点是产生空间碎片太多。
  • 标记复制法:将空间分成两部分,一边是空的,另一边存对象。遍历存对象的一边,将存活的对象复制到空白一侧,然后删除原来有对象区域的所有对象。速度快,但是需要的空间大,对内存的损耗大。适用于年轻代。
  • 标记整理法:遍历后将存活下来的对象都整理到一起,不零散分布。内存利用率好,但是性能慢。适用于老年代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值