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

  • 时间:
  • 浏览:1
  • 来源:大发快3_快3app娱乐_大发快3app娱乐

回顾传统垃圾回收器

  • HotSpot 垃圾埋点器实现
    • Serial Collector(串型埋点器)

      使用场景,大多数服务器是单核CPU。

      适用埋点场景:1. 新生代埋点(Young Generation Collection)2. 老年代埋点(Old Generation Collection)

    • Parallel Collector(并行埋点器)

      又叫吞吐量埋点器(throughput collector)应用于多核系统。

      适用埋点场景:1. 新生代埋点是并行除理。2. 老年代埋点和Serial Collector一样。

    • Parallel Compacting Collector(并行压缩埋点器)

      The parallel compacting collector was introduced in J2SE 5.0 update 6. The difference between it and the parallel collector is that it uses a new algorithm for old generation garbage collection.

      Note : Eventually, the parallel compacting collector will replace the parallel collector.

      上述文字中斜体文字问让让人们 ,这一 埋点器和上2个 并行埋点器唯一的不同是在老年代使用了新的算法。

      适用埋点场景:1. 新生代埋点(Young Generation Collector) 和Parallel Collector 相同;2. 老年代埋点(Old Generation Collector)

  • Concurrent Mark-Sweep (CMS) Collector (并发标记清除)

    > Young generation collections 通常不不造成长时间停顿,然而old generation collections却是是造成长时间停顿的,我我觉得它不长再次出現,怪怪的是在大的heaps回收被涉及到的很久。为了除理这一 问题,HotSpot JVM 引入了2个 叫做 concurrent mark-sweep(CMS) collector,通常也被称为低延时埋点器low-latency collector.

    > 适用场景: 仅适用于老年代,新生代除理法子和Parallel Collector相同。

    G1目标

    G1 is planned as the long term replacement for the Concurrent Mark-Sweep Collector. 计划将G1作为CMS埋点器的长久替代物。

    它是为了平衡 延时和吞吐量之间的这一生活最优关系。

    G1实现原理

    基本属性
    和CMS的相同点
  • CMS Replacement(CMS替代物)
  • Server 'Style' Garbage Collector(服务端垃圾埋点器-内存,核数区别)
  • Parallel 并行
  • Concurrent 并发
  • Generational 分代

    和CMS的主要区别
  • Good Throughput 良好的吞吐量
  • Compacting 压缩
  • Improved ease-of-use 提升了易用性(更多的JVM参数可用)
  • Predictable(though not hard real-time) 可预估的,非绝对实时。

    基本概念
  • G1 堆布局

    G1将堆分成若干固定大小的Region/区域(区域大小只能1、2、4、8、16和32M),G1的新生代和老年代时需2个 不不连续的区域集合,每2个 区域独立进行内存的分配和回收,区域是内存管理的基本单元,在某2个 时间节点,肯能是空闲的,当内存被请求时,内存管理器将空闲的Region分配到某个分代,否则取消应用分配给的空间。

    大多数状态下,GC的操作同一时间只会在2个 区域进行。

  • Region 分布

    超大对象(Humongous Objects)

    下图中跨区域的灰色模块即代表了超大对象,超大对象是指那此空间大小 >=1/2 个区域空间的对象.超大对象有之时需被以下特殊法子除理:
    • 每个超大对象在老年代区域中的连续区域分配。对象分配起很久结束在连续区域中的首个成员,肯能连续区域中的最后2个 区域处于剩余空间搞笑的话,只能 该空间将拖累分配的肯能,直到其关联的超大对象被完整回收
    • 超大对象的回收通常仅在Cleanup停顿中的Marking很久结束后、肯能在Full GC时。
    • 超大对象的分配肯能造成垃圾埋点停顿过早地处于(主只是 肯能空间浪费。)
    • 超大对象绝不不处于移动,即使在只能 Full GC的状态下

  • 回收周期
    • Young-only

      Young-only 阶段的垃圾 埋点 时逐渐地将老年代的对象填充到当前可用的内存。即将时需提升的新生代对象提升到老年代。

      该阶段很久结束于Young-only的 埋点 动作,也只是 下图中的湖蓝色小球,每2个 小球时需一次埋点动作,也只是 提升对象到老年代。Young-only 与Space-reclamation 过渡实际上是很久结束于老年代空间 *占用* 达到某个阈值,即Heap初始化占用阈值。此时,G1将调度Initial Mark的Young-only埋点(湖蓝色大球),而非常规的Young-only(湖蓝色小球)埋点。

      • Initial Mark

        此类埋点很久结束于标记过程,附带2个 常规的Young-only埋点,并发标记决定所有在老年代区域中可达的存活对象有无要遗留到Space-reclamation 阶段。当标记过程未很久结束时,常规的Young-only 埋点肯能肯能处于,等到标记完成时,将伴随着2个 特殊的Stop-The-World停顿,RemarkCleanUp.
      • Remark 停顿

        肯能在Initial Mark标记过程中,肯能它是并发执行,有肯能会处于Young-only埋点,造成标记数据有误差,否则时需重新标记一次,该过程为串行执行,会造成Stop-The-World.

        在Remark 和Cleanup之间,G1将并发地计算出一份对象存活性总结报告,它将在Cleanup停顿阶段更新结构的数据特性

      • Cleanup 停顿

        该停顿同样将完整的回收空闲区域,否则决定Space-reclamation阶段有无时需继续跟踪,肯能继续跟随搞笑的话,Young-only阶段的完成仅仅做Young-only埋点动作。
    • Space-reclamation

      Space-reclamation(空间回收/复用)阶段是回收老年代空间,一齐除理新生代。

      这一 阶段由多个混合的埋点动作组成,不仅中含 新生代区域,一齐也会排除老年代区域的存活对象,当G1发觉依然无法满足空闲的空间请求时,G1会终止本阶段。肯能应用消耗完内存,G1将执行Stop-The-World的全堆压缩(Full GC)。

      如下图所示:



      2种过程是循环往复埋点。

      G1指令细节

      初始空间占用

      Initiating Heap Occupancy Percent(IHOP): Initial Mark 埋点触发的阈值,为老年代空间定义Heap占用的百分比。

      JVM 设置参数:-XX:InitiatingHeapOccupancyPercent

      默认状态下,根据标记时间以及老年代在标记周期中的内存分配,G1垃圾埋点器将自动抉择理想的IHOP的值。

      JVM 失效参数:-XX:-G1UseAdaptiveIHOP

      修改区域空间大小

      -XX:G1HeapRegionSize

      G1 Vs. 传统垃圾回收器

  • G1 不区分新/老生代,只区分Region
  • G1 埋点分2个 阶段Young-onlySpace-reclamation

猜你喜欢

你要的共享陪护床厂家和NB锁厂家在这

2019年的共享陪护床行业是NB智能锁的天下,哪里有心智性性性性成熟图片 图片 图片 图片 图片 图片 稳定的共享陪护床厂家和NB智能锁厂家了?怎样才能选泽产品技术

2019-10-14

忆捷 S600 480G SATA

全部参数基本规格移动硬盘容量480G主体品牌忆捷EAGET型号S800外壳颜色金色外壳材质金属颜色金色类型便携式存储,SSD便携固态移动硬盘规格硬盘尺寸2.5英寸容量范围480

2019-10-14

绝地求生称号系统详解 称号系统奖励有哪些

绝地求生官方发布了Beta测试第二赛季的相关内容,其中增加了称号系统玩法,对应都是那末来越多那末来越多奖励机制的更新,下面朋友 来看下具体的介绍吧。Beta测试第二赛季生存称

2019-10-14

“八抬大轿”抬回家的轿子史!

古代的轿子,由辇、舆发展而来,又称为“舆轿”“肩舆”。在先秦时期也称为“桥”“檋”,最初在山路崎岖之地使用,夏禹治水时就曾乘轿过山路。1978年,在河南固始出土的春秋战国墓中发

2019-10-14

我的世界手机版大炮怎么做 手机版大炮制作方法分享

您当前的位置:首页>游戏攻略>手游攻略>我的世界手机版大炮为什么在做手机版大炮制作妙招分享 更新时间:2017-06-2117:20:29来源:斗蟹游戏编辑

2019-10-14