码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-09-19 22:00:22      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:参数   名称   替代   垃圾回收器   算法   指定   xmx   设计原则   算法实现   

 

  相比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

标签:参数   名称   替代   垃圾回收器   算法   指定   xmx   设计原则   算法实现   

原文地址:https://www.cnblogs.com/snowwhite/p/9676634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!