0
点赞
收藏
分享

微信扫一扫

G1能作为JDK9默认垃圾回收器的优势分析

上一篇 <<<一张图看懂CMS垃圾回收器的底层原理
下一篇 >>>CMS和G1的漏标问题解决及三色标记算法图解


CMS收集器存在哪些缺点

什么是G1收集器

垃圾回收核心原理

1.使用Rset找关联关系【跨带引用关联】

2.使用cset表里可回收的空间(可能20%、50%和100%等),把尽可能回收完的空间进行回收。

3.使用写屏障确保新生代对象被老年代对象引用的时候不被gc

Heap信息:
 garbage-first heap   total 570368K, used 307771K [0x00000006c0000000, 0x00000006c0101168, 0x00000007c0000000)
  region size 1024K, 2 young (2048K), 1 survivors (1024K)
 Metaspace       used 3129K, capacity 4568K, committed 4864K, reserved 1056768K
  class space    used 337K, capacity 392K, committed 512K, reserved 1048576K

G1收集器特色

1.并行与并发

2.分代收集原理

G1收集器,也会分为新生代eden、S0或者S1区域,但是不要求整个eden、S0或者S1区域具有连续性。


2.1YoungGC(新生代)回收

2.2young gc + concurrent mark(新生代+并发标)回收
2.3MixGC(混合)回收(图形参考CMS)

3.空间整合

4.可预测的停顿时间模型

5.局限性

参数设置

选项和默认值 描述
-XX:+UseG1GC 使用垃圾优先(G1)收集器
-XX:MaxGCPauseMillis = n 设置期望达到的最大Gc停顿时间指标 ,默认值是200ms
-XX:InitiatingHeapOccupancyPercent = n 启动并发GC周期的(整个)堆占用百分比。GC使用它来触发GC,该GC基于整个堆的占用来触发并发GC周期,而不仅仅是世代之一(例如,G1)。值为0表示“进行恒定的GC循环”。默认值为45。
-XX:NewRatio = n 新旧大小比例。预设值为2。
-XX:SurvivorRatio = n 伊甸园/幸存者空间大小之比。预设值为8。
-XX:MaxTenuringThreshold = n 任职期限的最大值。预设值为15。
-XX:ParallelGCThreads = n 设置垃圾回收线程数 最大设置为8
-XX:ConcGCThreads = n 设置并发标记的线程数。将n设置为并行垃圾回收线程数(ParallelGCThreads)的1/4左右。
-XX:G1ReservePercent = n 设置保留为虚假上限的堆数量,以减少升级失败的可能性。预设值为10。
-XX:G1HeapRegionSize = n 使用G1,Java堆可细分为大小一致的区域。这将设置各个细分的大小。该参数的默认值是根据堆大小按人机工程学确定的。最小值为1Mb,最大值为32Mb。

相关文章链接:
<<<JVM整体内存结构的图解,直观明了
<<<javap命令查看对象信息及操作方法在JVM层的实现原理
<<<javap命令反查汇编指令汇总
<<<ClassLoader类加载器顺序Demo测试与双亲委派源码解读
<<<自定义SPI和热部署技术破坏类加载器的双亲委派模式
<<<JVM中对象如何完成空间分配和初始化工作
<<<JVM元空间(方法区)和栈内存溢出原因及解决方案
<<<JVM堆内存溢出和内存泄露问题定位和解决
<<<JVM常见死锁问题产生原因和多种诊断方式
<<<服务器CPU飙升为100%问题排查及如何避免
<<<JVM内存诊断命令和排查工具汇总
<<<JVM新生代老年代算法汇总图解
<<<JVM垃圾回收不要手动System.gc的真正原因
<<<JVM垃圾回收引用计数法和根搜索算法图解
<<<JVM垃圾回收STW(Stop-The-World)代码演示
<<<JVM垃圾回收器的发展历程及使用场景汇总
<<<JVM串行并行垃圾回收器的关注点
<<<一张图看懂CMS垃圾回收器的底层原理
<<<CMS和G1的漏标问题解决及三色标记算法图解
<<<GC中新生代进入老年代的方式汇总
<<<GC常用日志参数配置及分析工具说明
<<<FullGC、MinorGC、STW等常见问题如何解答
<<<JVM性能调优的评估指标及调优示例

举报

相关推荐

0 条评论