• 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将新生代,老年代的物理空间划分取消了。

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

  • 相关阅读:
    在mysql数据库中制作千万级测试表
    Oracle生成千万测试数据
    mysql ODBC 在64位下提示找不到odbc驱动问题
    mysql指定某行或者某列的排序
    Python_Openpyxl 浅谈(最全总结 足够初次使用)
    Python3 多线程
    python爬虫项目-一见倾心壁纸
    gisoracle做windows界面
    Python 画 直方图/条形图/柱状图
    做动画animation--matplotlib--python2和3通用代码
  • 原文地址:https://www.cnblogs.com/snowwhite/p/9676634.html
Copyright © 2020-2023  润新知