美文网首页JVMjvm
垃圾回收器学习之Full GC和CMS GC的区别

垃圾回收器学习之Full GC和CMS GC的区别

作者: 小程故事多 | 来源:发表于2016-11-02 16:07 被阅读1112次

针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:Partial GC:并不收集整个GC堆的模式
Young GC:只收集young gen的GC
Old GC:只收集old gen的GC。只有CMS的concurrent collection是这个模式。
Mixed GC:收集整个young gen以及部分old gen的GC。只有G1有这个模式。

HotSpot VM里其它非并发GC的触发条件复杂一些,不过大致的原理与上面说的其实一样。当然也总有例外。Parallel Scavenge(-XX:+UseParallelGC)框架下,默认是在要触发full GC前先执行一次young GC,并且两次GC之间能让应用程序稍微运行一小下,以期降低full GC的暂停时间(因为young GC会尽量清理了young gen的死对象,减少了full GC的工作量)。并发GC的触发条件就不太一样。以CMS GC为例,它主要是定时去检查old gen的使用量,当使用量超过了触发比例就会启动一次CMS GC,对old gen做并发收集。并发并行垃圾回收器在触发full gc之前都会先触发一下young垃圾回收,这个可以根据参数进行配置。而串行垃圾回收的full gc默认就是老年代回收。

  1. Full GC == Major GC指的是对老年代/永久代的stop the world的GC

  2. Full GC的次数 = 老年代GC时 stop the world的次数

  3. Full GC的时间 = 老年代GC时 stop the world的总时间

  4. CMS 不等于Full GC,我们可以看到CMS分为多个阶段,只有stop the world的阶段被计算到了Full GC的次数和时间,而和业务线程并发的GC的次数和时间则不被认为是Full GC。CMS主要可以分为initial mark(stop the world), concurrent mark, remark(stop the world), concurrent sweep几个阶段,其中initial mark和remark会stop the world。

  5. Full GC本身不会先进行Minor GC,我们可以配置,让Full GC之前先进行一次Minor GC,因为老年代很多对象都会引用到新生代的对象,先进行一次Minor GC可以提高老年代GC的速度。比如老年代使用CMS时,设置CMSScavengeBeforeRemark优化,让CMS remark之前先进行一次Minor GC。

相关文章

  • JVM学习笔记

    1. young GC 和 full GC young gc:回收年轻代垃圾,回收频繁,速度较快 full gc:...

  • 垃圾回收器学习之Full GC和CMS GC的区别

    针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:Partial GC:并不收集整个GC堆的模式...

  • JVM垃圾回收日志各字段详解

    JVM垃圾回收日志各字段详解。 一、演示Full GC [Full GC (Ergonomics) [PSYoun...

  • jvm

    垃圾回收: 回收算法、收集器 GC ROOTS寻根,可达性分析 CMS:标记-回收,cpu、浮动垃圾、内存碎片。初...

  • JVM: GC过程探秘

    Minor GC 和 Full GC区别新生代 GC(Minor GC):指发生新生代的的垃圾收集动作,Minor...

  • 6、CMS垃圾回收器的详解

    本次主要学习下上次讲到的CMS垃圾回收器,更加深入的学习下垃圾回收的过程。先抛出几个新的概念:1.Minor GC...

  • JVM --- 垃圾回收

    一、YGC和full GC的区别 YGC(minor GC):只针对新生代区域进行GC,发生得非常频繁,回收速度也...

  • 06 垃圾回收器

    1 学习垃圾回收的意义 Java与C++等语言最大的技术区别:自动化的垃圾回收机制(GC) 为什么要了解GC和内存...

  • GC回收机制与分代回收策略

    GC回收机制 一、前言 垃圾回收:Garbage Collection,简写 GC。JVM 中的垃圾回收器会自动回...

  • 经典面试题14 - 垃圾回收和自动引用计数

    问题自动引用计数(ARC) 和 垃圾回收(GC)有什么区别? 解答在讨论自动引用计数(ARC) 和 垃圾回收(GC...

网友评论

    本文标题:垃圾回收器学习之Full GC和CMS GC的区别

    本文链接:https://www.haomeiwen.com/subject/ougvuttx.html