`
xiangxingchina
  • 浏览: 506855 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CMS垃圾收集器与G1收集器

阅读更多

CMS收集器:

1 是一种以获取最短回收停顿时间为目标的收集器。

2 基于“标记-清除”算法实现

3 运作过程如下

1)初始标记  

2)并发标记

3)重新标记

4)并发清除

    初始标记、从新标记这两个步骤仍然需要“stop the world”。初始标记很快。

4 CMS优缺点

主要优点:并发收集、低停顿。

主要缺点:

1)CMS收集器对CPU资源非常敏感。在并发阶段,它虽然不会导致用户线程停顿,但是会因为占用了一部分线程而导致应用程序变慢,总吞吐量会降低。

2)CMS收集器无法处理浮动垃圾,可能会出现“Concurrent Mode Failure(并发模式故障)”失败而导致Full GC产生。

浮动垃圾:由于CMS并发清理阶段用户线程还在运行着,伴随着程序运行自然就会有新的垃圾不断产生,这部分垃圾出现的标记过程之后,CMS无法在当次收集中处理掉它们,只好留待下一次GC中再清理。这些垃圾就是“浮动垃圾”

3)CMS是一款“标记--清除”算法实现的收集器,容易出现大量空间碎片。当空间碎片过多,将会给大对象分配带来很大的麻烦,往往会出现老年代还有很大空间剩余,但是无法找到足够大的连续空间来分配当前对象,不得不提前触发一次Full GC。


G1收集器

1 G1是一款面向服务端应用的垃圾收集器。

2 G1具备如下特点:

1) 并行于并发:G1能充分利用CPU、多核环境下的硬件优势,使用多个CPU(CPU或者CPU核心)来缩短stop-The-World停顿时间。部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以通过并发的方式让java程序继续执行。

2) 分代收集:虽然G1可以不需要其他收集器配合就能独立管理整个GC堆,但是还是保留了分代的概念。它能够采用不同的方式去处理新创建的对象和已经存活了一段时间,熬过多次GC的旧对象以获取更好的收集效果。

3) 空间整合:与CMS的“标记--清理”算法不同,G1从整体来看是基于“标记整理”算法实现的收集器;从局部上来看是基于“复制”算法实现的。

4) 可预测的停顿:这是G1相对于CMS的另一个大优势,降低停顿时间是G1和CMS共同的关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段内,

5) G1运作步骤:

 

初始标记--> 并发标记--> 最终标记-->筛选回收

初始标记:仅标记一下GC Roots能直接关联到的对象,这一阶段需要停顿线程,但是耗时很短,

并发标记:从GC Root开始对堆中对象进行可达性分析,找出存活的对象,这阶段时耗时较长,但可与用户程序并发执行。

最终标记:为了修正在并发标记期间因用户程序继续运作而导致标记产生变动的那一部分标记记录,这一阶段需要停顿线程,但是可并行执行。

筛选回收:首先对各个Region的回收价值和成本进行排序,根据用户所期望的GC停顿时间来制定回收计划。

 

 

 

 

 

 

 

来源

http://blog.csdn.net/linhu007/article/details/48897597

分享到:
评论

相关推荐

    用了很多年的 CMS 垃圾收集器,终于换成了 G1,真香!!(csdn)————程序.pdf

    用了很多年的 CMS 垃圾收集器,终于换成了 G1,真香!!(csdn)————程序

    61-JVM之CMS收集器与G1收集器1

    G1跟踪每个Region里面垃圾堆积的价值大小(回收所得空间大小与回收所需时间长短的经验值),维护一个优先列表,根据允许的收集时间,优先回收价值大的Region

    G1垃圾收集器1

    面试常考CMS收集器初始标记(Stop the world)并发标记预清理可被终止的预清理重新标记(Stop the world)并发清理并发重置G1收集器初始

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    1.6G1收集器 第六节:JVM参数调优 1.1 JVM重要参数介绍 1.2JVM参数调优 1.3JVM参数设置思路1.4JVM调优常用指令说明 第七节:JVM项目实战 1.1案例背景 1.2排查步骤 1.3.arthas 1.3.1.arthas简介 1.3.2.arthas...

    一文了解JVM全部垃圾回收器,从Serial到ZGC

    对象搜索算法与回收算法介绍了...G1是一个独立的收集器不依赖其他6种收集器。ZGC是目前JDK11的实验收集器。下面来看看各个收集器的特性Serial,是单线程执行垃圾回收的。当需要执行垃圾回收时,程序会暂停一切手上的

    降低Java垃圾回收开销的5条建议

    保持GC低开销的窍门有哪些?  随着一再拖延而即将发布的 Java9,G1(“Garbage First”)垃圾回收器将被成为 HotSpot 虚拟机默认的垃圾回收器。...CMS(“Concurrent Mark-Sweep”)收集器与 parallel GC 相比,它将回收过

    JVM内存与垃圾回收课件.zip

    上篇:内存与垃圾回收篇 中篇:字节码与类的加载篇 垃圾回收的几种常用算法...Jvm的垃圾收集器(serial收集器、parnew收集器、parallel scavenge收集器、serial old 收集器、parallel old收集器、cms收集器、g1收集器)

    钻研JAVA虚拟机 全面掌握JVM JAVA虚拟机深入浅出实战课程 视频附带课程代码

    ├─(12) 0812_【了解】CMS垃圾收集器.mp4 ├─(13) 0813_【掌握】G1垃圾收集器.mp4 ├─(14) 0814_【理解】ZGC垃圾收集器.mp4 ├─(15) 0815_【理解】jstat监控工具.mp4 ├─(16) 0816_【理解】jmap监控工具.mp4 ├...

    JAVA虚拟机精讲

    字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法、垃圾收集器(重点讲解了Serial 收集器、ParNew 收集器、Parallel 收集器...

    Java虚拟机精讲.高翔龙.带书签完整版.pdf

    字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法、垃圾收集器(重点讲解了Serial 收集器、ParNew 收集器、Parallel 收集器...

    JAVA虚拟机精讲 pdf

    字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法、垃圾收集器(重点讲解了Serial 收集器、ParNew 收集器、Parallel 收集器...

    java虚拟机精讲(电子工业出版社出版)

    HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法、垃圾收集器(重点讲解了Serial 收集器、ParNew收集器、Parallel收集器、CMS(Concurrent-Mark-Sweep)收集器和 G1(Garbage-First)...

    JVM讲解视频.zip

    JVM全套教程视频 o类加载机制 java跨平台机制 Java代码执行流程 ...CMS垃圾收集器详解 G1垃圾收集器详解 ZGC垃圾收集器详解 三色标记算法 跨代垃圾收集之卡表详解 oJVM调优实战 JDK自带调优

    JVM面试资料:JVM结构、JVM调优、四大垃圾回收算法、七大垃圾回收器

    JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构;...七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel、Parallel Old、G1 JVM调优:命令行指令,设置堆内存大小的参数

    【JVM和性能优化】2.垃圾回收器和内存分配策略

    Compact)GC算法综合用年轻代老年代永久代枚举根节点安全点安全区域GC回收器Serial 收集器ParNew 收集器Parallel Scavenge 收集器Serial Old 收集器Parallel Old 收集器CMS 收集器G1 收集器ZGCSTW实现内存分配与回收...

    Java 8快的垃圾搜集器是什么?

    OpenJDK 8 有多种 GC(Garbage Collector)算法,如 Parallel GC、CMS 和 G1。哪一个才是快的呢?如果在 Java 9 中将 Java 8 默认的 GC 从 Parallel GC 改为 G1 (目前只是建议)将会怎么样呢?让我们对此进行基准...

    《JVM从入门到入魔》笔记.pdf

    2:垃圾回收:垃圾确定【引用计数法、可达性分析】+垃圾收集算法【标记-清除、标记整理、复制】+垃圾收集器【Serial+PareNew+Serial Old+Paralles Old+CMS+G1】 3:JVM内存调优:JVM参数【标准参数、-X参数、-XX参数等...

    HotSpot实战高清版本

    Cache、Perf Data、Crash 分析方法、转储分析方法、 垃圾收集器的设计演进、CMS 和 G1 收集器、栈、JVM 对硬件寄存器的利用、栈顶缓存技术、解释器、字节 码表、转发表、Stubs、Code Cache、Code 生成器、JIT 编译器...

Global site tag (gtag.js) - Google Analytics