JVM垃圾收集器【Serial、ParNew、PS、CMS、Serial Old、PO、G1】总结

jdk版本<=9 包含上述垃圾收集器,根据分代理论基础可分为新生代+老年代。

G1的出现打破了以往分代理论的思考,通过化繁为简的方式实现低延迟。

新生代收集器

Serial

早期版本新生代垃圾收集器

特点

收集算法:标记-复制
线程协作:单线程
应用领域:客户端、内存有限

ParNew

继承Serial思路,拓展为并行处理

特点

收集算法:标记-复制
线程协作:多个GC线程并行处理
应用领域:主要结合CMS使用,低延迟

PS

继承ParNew,关注点为可控吞吐量【用户线程占据CPU时间/所有线程占据CPU总时间】

特点

收集算法:标记-复制
线程协作:多GC线程并行处理
更新点:通过添加参数-XX:+UseAdaptiveSizePolicy实现将内存管理寄托于虚拟机。实现自动管理内存。

老年代收集器

Serial Old

早期作为老年代收集器,同Serial配合使用,同时也可作为CMS分配对象失败时的后备收集器

特点

收集算法:标记-整理
线程协作:单线程处理

CMS

CMS的出现是第一次尝试追求低延迟,以及后面的G1都是在追求低延迟。可以说G1作为CMS的覆盖者。

特点

收集算法:标记-清除
收集流程:初始标记-并发标记-最终标记-并发回收,初始标记+最终标记需要暂停用户线程,确保一致性。
收集算法优点:快速
收集算法缺点:产生大量浮动垃圾,分配连续大对象时易产生full gc

PO

PO的产生是为了搭配PS,ps出现时只能跟Serial Old搭配,吞吐量在老年代不能搭配,故产生了PO

特点

收集算法:标记-整理
线程协作:并发处理

区域收集器【打破常规】

G1【Garbage First】

正如前文提到,G1也属于低延迟目标的实现者,创造它不仅是一种思维上的突破,更作为CMS的替换者,两者在处理流程上有很大的相似之处。

特点

回收算法:标记-整理
思维突破
不在区分新生代、老年代,而是将内存划分成一个个Region区域,区域大小在1-32MB【2的幂次方】之间,可理解为新生代、幸存区,当Region区域中对象内存大于一半时可将其认为是Humgongous Region【老年代】
收集流程
初始标记-并发标记-最终标记-筛选回收,除了并发标记,其余都是暂停用户线程,GC并发处理,归根结底跟回收算法有关。
如何实现低延迟
计算每个Region中回收效率,内部维护一个优先队列,每次回收指定时间内的Region。
缺点
内存占用相对较大,每个Region内部维护一个记忆集用来获取脏数据【GC标记之后,又失去存活条件】

低延迟收集器CMS、G1对比

				CMS									G1
关系:			先驱									后代
可达性分析:		增量更新								原始快照

可达性分析问题

并发对象扫描时对象消失问题,当下列两个条件同时发生
1、赋值器插入一条或多条从黑色对象到白色对象的新引用【增量更新破坏原理】
2、赋值器删除量全部从灰色对象到改白色对象的新引用【原始快照破话原理】

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM (Java Virtual Machine) G1 (Garbage-First) 垃圾收集器是一种用于 Java 应用程序的垃圾收集算法。它是自JDK 7u4版本后引入的一种全新的垃圾收集器G1垃圾收集器的设计目标是为了解决传统的分代垃圾收集器可能遇到的一些问题,如停顿时间长、内存碎片化等。它采用了一种基于区域的垃圾收集方式,可以将内存划分为多个大小相等的区域,每个区域可以是Eden、Survivor或Old区。 G1垃圾收集器的工作原理如下: 1. 初始标记(Initial Mark):标记所有从根对象直接可达的对象。 2. 并发标记(Concurrent Mark):在并发执行程序的同时,标记那些在初始标记阶段无法访问到的对象。 3. 最终标记(Final Mark):为并发标记阶段中发生改变的对象进行最终标记。 4. 筛选回收(Live Data Counting and Evacuation):根据各个区域的回收价值来优先回收价值低的区域。 G1垃圾收集器具有以下特点: - 并发执行:在执行垃圾收集过程时,尽可能减少应用程序的停顿时间。 - 分区回收:将整个堆划分为多个区域,可以根据需要优先回收垃圾较多的区域,从而避免全堆回收带来的长时间停顿。 - 内存整理:G1垃圾收集器会对内存进行整理,减少内存碎片化,提高内存利用率。 需要注意的是,G1垃圾收集器并不适用于所有情况。在特定的场景下,如大堆情况下的长时间运行、对延迟要求非常高的应用等,可能需要考虑其他垃圾收集器的使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值