jvm-垃圾回收器

4 篇文章 0 订阅

serial

  • 最基本,发展历史最悠久的收集器
  • 单线程的收集器
    • 使用一个CPU或者一条收集线程去完成垃圾收集工作。
    • 进行垃圾回收时,必须暂停其他所有的工作线程,直到它回收结束。
    • 针对新生代;
    • 采用复制算法;

优点:

  • 简单而高效
  • 依然是虚拟机运行在Client模式下的默认新生代收集器

缺点:

  • 遇到垃圾回收就要停下来等单线程的serial垃圾回收,性能上较差

参数:

-XX:+UseSerialGC:添加该参数来显式的使用串行垃圾收集器;

serial-old

  • 是Serial收集器的老年代版本。
  • 单线程收集器
  • 使用标记-整理算法
  • 给Client模式下的虚拟机使用。
  • server
    • 在jdk1.5以及之前的版本中与Parallel Scavenge收集器搭配使用。
    • 作为CMS收集器的后备预案,在并发收集发生Concurrent Mode Failure时使用。

parNew

  • Serial的多线程版本。
  • 其余行为跟Serial一致。(所有可控参数,收集算法,stop the world,对象分配规则,回收策略)
  • 许多运行在Server模式下的虚拟机中首选的新生代收集器
    • 除了Serial收集器外,目前只有它能与CMS(concurrent mark sweep)收集器配合工作
  • -XX:+UseConcMarkSweepGC或者-XX:+UseParNewGC来强制指定它作为新生代收集器。
  • -XX:ParallelGCThreads参数来限制垃圾收集的线程数。默认是CPU核数。

parallel Scavenge

  • 新生代收集器。
  • 复制算法
  • 并行的多线程收集器。
  • 目的是达到一个可控制的吞吐量(Throughput)–CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)。
  • -XX:MaxGCPauseMillis参数控制最大垃圾收集停顿时间。
    • < 0的毫秒数
    • GC停顿时间缩短是以牺牲吞吐量和新生代空间来换取的。
  • -XX:GCTimeRatio参数设置吞吐量的大小。
    • 0 < x < 100的整数
    • 默认99
  • -XX:+UseAdaptiveSizePolicy。
    • 这个参数打开后,就不需要手动指定新生代大小(-Xmn),Eden与Suvivor的比例(-XX:SurvivorRadio)、晋升老年代对象大小(-XX:PretenureSizeThreshold)
  • GC自适应的调节策略。
  • 无法配合CMS收集器配合工作。

parallel old

  • parallel Scavenge的老年代版本。
  • 使用多线程
  • 标记整理算法
  • jdk1.6
  • 如果新生代选择了parallel Scavenge,老年代除了serial old别无选择

g1

  • 面向服务端应用的垃圾收集器。
  • 并发与并行。充分利用多CPU,多核环境下的硬件优势,使用多个CPU来缩短Stop The World停顿的时间。
  • 分代收集。
  • 空间整合。
    • 从整体看,采用了标记-整理算法
    • 从局部看(两个Region)基于复制算法。
  • 可预测的停顿。
  • 将整个java堆划分为多个大小相等的独立区域(Region),新生代和老年代不再是物理隔离,它们都是一部分Region的集合。
  • 避免整个堆进行全区域的垃圾收集。
  • 运作流程:
    • 初始标记
    • 并发标记
    • 最终标记
    • 筛选回收

cms

  • Concurrent Mark Sweep
  • 以获取最短回收停顿时间为目标的收集器。
  • 标记-清除算法。
    • 初始标记(可达性分析法)
    • 并发标记
    • 重新标记
    • 并发清除

优点:

  • 并发收集
  • 低停顿

缺点:

  • 对CPU资源非常敏感
  • 无法处理浮动垃圾,可能出现“Concurrent Mode Failure”失败而导致另一次Full GC的产生。
  • 大量空间碎片产生。(-XX:+UseCMSCompactAtFullCollection,-XX:CMSFullGCsBeforeCompaction)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值