上一篇 <<<一张图看懂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性能调优的评估指标及调优示例