JVM垃圾回收器之G1(Garbage First)--new

Posted snowwhite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM垃圾回收器之G1(Garbage First)--new相关的知识,希望对你有一定的参考价值。

 

  相比CMS收集器有两个显著的改进:

  (1)、 G1收集器是基于“标记-整理”算法实现的收集器,不会产生空间碎片

  (2)、 它可以精确地控制停顿,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。

  原理:G1将整个Java堆(包括新生代、老年代)划分为多个大小固定的独立区域(Region),并且跟踪这些区域里面的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域(这也是Garbage First名称的由来)。

  区域划分及有优先级的区域回收,保证了G1收集器在有限的时间内可以获得最高的收集效率。

 

  G1的第一篇paper(附录1)发表于2004年,在2012年才在jdk1.7u4中可用。oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。为何oracle要极力推荐G1呢,G1有哪些优点?

  首先,G1的设计原则就是简单可行的性能调优,开发人员仅仅需要声明以下参数即可:

-XX:+UseG1GC -Xmx32g -XX:MaxGCPauseMillis=200

  其中-XX:+UseG1GC为开启G1垃圾收集器,-Xmx32g 设计堆内存的最大内存为32G,-XX:MaxGCPauseMillis=200设置GC的最大暂停时间为200ms。如果我们需要调优,在内存大小一定的情况下,我们只需要修改最大暂停时间即可。

  其次,G1将新生代,老年代的物理空间划分取消了。

  这样我们再也不用单独的空间对每个代进行设置了,不用担心每个代内存是否足够。

 





以上是关于JVM垃圾回收器之G1(Garbage First)--new的主要内容,如果未能解决你的问题,请参考以下文章

[JVM 相关] Java 新型垃圾回收器(Garbage First,G1)

详解 JVM Garbage First(G1) 垃圾收集器

关于 G1(Garbage First)垃圾收集器

关于 G1(Garbage First)垃圾收集器

JVM19_G1垃圾收集器概述特点常用参数Region详解记忆集与写屏障年轻代GC并发标记过程Mixed GCFull GC

Garbage First(G1)垃圾收集器