JVM面试_8

老年代常见的垃圾收集器

Serial Old收集器

  1. 通过命令UseSerialOldGC可以使老年代使用该收集器回收垃圾,它使用的是标记-整理算法.
  2. 单线程收集,进行垃圾收集时,必须暂停所有的工作线程.
  3. 简单高效,Client模式下默认的老年代收集器
    在这里插入图片描述

Parallel Old收集器

  1. 通过命令UseParallelOldGC可以使老年代使用该收集器回收垃圾,它使用的是标记-整理算法.
  2. 多线程收集,吞吐量优先.
    在这里插入图片描述

CMS收集器

  1. 通过命令UseConcMarkSweepGC可以使老年代使用该收集器回收垃圾,它使用的是标记-清除算法.
  2. 它的意义在于垃圾回收线程和用户线程几乎可以做到同时工作.
  3. 其垃圾回收过程主要分为以下六步:
    1. 初始化标记: 此时会发生stop-the-world,这个阶段需要虚拟机停顿正在执行的任务.
    2. 并发标记: 并发追溯标记,程序不会停顿(与应用程序线程并发执行).
    3. 并发预处理: 查找执行并发标记阶段从年轻代晋升到老年代的对象.
    4. 重新标记: 暂停虚拟机,扫描CMS堆中的剩余对象.
    5. 并发清理: 清理垃圾对象,程序不会卡顿.
    6. 并发重置: 重置CMS收集器的数据结构.
      在这里插入图片描述

G1收集器(Garbage First收集器)

  1. 通过命令UseG1GC可以使老年代使用该收集器回收垃圾,它使用的是复制+标记-整理算法.

  2. Garbage First收集器既用于年轻代,也用于老年代.

  3. 它会将整个java堆内存划分为多个大小相等的Regin(区域).

  4. 新生代和老年代不再物理隔离,他们可以是一部分不连续的Regin的集合.
    在这里插入图片描述
    Garbage First收集器的特点

  5. 并发和并行: 使用多个cpu来缩短stop-the-world的停顿时间,与用户线程并发执行.

  6. 分代收集

  7. 空间整合

  8. 可预测的停顿.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值