JVM之GC收集器

本文详细介绍了JVM的各种垃圾收集器,包括Serial、Serial Old、ParNew、Parallel Scavenge、Parallel Old、CMS和G1。每个收集器的特点和适用场景被逐一阐述,如Serial适合Client模式,Parallel Scavenge追求高吞吐量,CMS目标是最短停顿时间,而G1则具备可预测的停顿时间。此外,文章还讨论了GC收集器的选择策略,包括吞吐量优先和响应时间优先的考虑。
摘要由CSDN通过智能技术生成

垃圾收集器

image

  • 串行收集器 Serial开头的
    • Serial
    • Serial Old(MSC)
  • 并行收集器 Parallel开头的
    • ParNew
    • Parallel Scavenge
    • Parallel Old
  • 并发收集器
    • CMS (Concurrent Mark Sweep)
  • G1(Garbage First)
    • 图片中的问号位置
    • JDK 1.7后有G1

GC算法是内存回收的方法论,GC收集器是内存回收的具体实现

Serial收集器

  • 最基本,发展历史悠久,稳定
  • 如名字,单线程收集器
  • GC时,暂停所有的工作线程,直到GC结束
  • 新生代(复制算法),老年代(标记-整理算法)都使用
  • 虚拟机运行在Client模式时的默认新生代收集器
  • 如下图,包括Serial和Serial Old

image

Serial Old收集器

  • Serial收集器的老年代版本
  • 使用标记-整理算法
  • Client模式下,见Serial收集器
  • Server模式下
    • 在JDK 1.5之前,与Parallel Scanvenge配合使用
    • 作为CMS的后备预案,发生Concurrent Model Failue时使用

ParNew收集器

  • 新生代收集器
  • Serial的多线程版本,沒有太多创新之处
  • Server模式下,JVM首选的新生代收集器
  • 只有ParNew能和老年代的CMS配合使用
  • ParNew收集器是使用-XX:+UseConcMarkSweepGC选项的默认新生代收集器;也可以用-XX:+UseParNewGC选项来强制指定它
  • 单CPU环境下,性能不会比Serial好。有线程切换的开销

image

Parallel Scanvenge收集器

  • 新生代收集器
  • 复制算法,并行的多线程
  • 也叫吞吐量优先收集器
  • 目标:达到一个可控制的吞吐量(Throughput)
  • 吞吐量=运行用户代码时间/(运行用户代码时间 + GC时间)
  • 停顿时间短,适合与用户交互的程序;高吞吐量,可以有效利用CPU时间,尽管完成计算任务,适合后台运算而不需要太多交互的任务
  • 提供两个参数精确控制吞
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值