zoukankan      html  css  js  c++  java
  • 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将新生代,老年代的物理空间划分取消了。

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

  • 相关阅读:
    java之Arrays.asList
    MySql索引
    Maven私服搭建
    基于Docker的GitLab搭建
    ubuntu新建组合用户命令不管用
    Linux 安装jdk
    消息队列
    Netty之大动脉Pipeline
    Netty之大名鼎鼎的EventLoop
    Netty之揭开BootStrap 的神秘面纱
  • 原文地址:https://www.cnblogs.com/snowwhite/p/9676634.html
Copyright © 2011-2022 走看看