G1垃圾收集器配置
本文于 1956 天之前发表,文中内容可能已经过时。
常用的配置整理
可选项及默认值 | 描述 |
---|---|
-XX:+UseG1GC | G1收集器启动 |
-XX:MaxGCPauseMillis=n | 垃圾收集的预期时间,尽量让实际收集时间和预期时间接近 |
-XX:InitiatingHeapOccupancyPercent=n | 设置触发标记周期的 Java 堆占用率阈值。默认占用率是整个 Java 堆的 45%。默认值 45.tip:避免使用 -Xmn 选项或 -XX:NewRatio 等其他相关选项显式设置年轻代大小。固定年轻代的大小会覆盖暂停时间目标。 |
-XX:NewRatio=n | new/old 年代的大小比例. 默认值 2.G1 一般不设置这个值,而是通过设置 |
-XX:ConcGCThreads=n | 设置并行标记的线程数。将 n 设置为并行垃圾回收线程数 (ParallelGCThreads) 的 1/4 左右 |
-XX:ParallelGCThreads=n | 垃圾收集的线程数,一般逻辑处理器的数量 |
-XX:SurvivorRatio=n | eden/survivor 空间的大小比例. 默认值 8. |
-XX:G1HeapRegionSize=n | 使用G1,Java堆被划分为大小均匀的区域。这个参数配置各个子区域的大小。此参数的默认值根据堆大小的人工进行确定。最小值为 1Mb 且最大值为 32Mb,一般是2048个region,2G的内存空间设置为1M。 |
-XX:SurvivorRatio=n | eden/survivor 空间的大小比例. 默认值 8. |
-XX:+DisableExplicitGC | 禁止在程序中System.gc |
-XX:+UseTLAB | 优先尝试在TALB空间分配内存。如果是新生代分配,会同步锁定,tlab无所分配,所以效率相对稳定。 |
日记配置整理
-verbose:gc
-XX:+HeapDumpOnOutOfMemoryError
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintAdaptiveSizePolicy
-Xloggc:/appl/gclogs/gc.log
试验性虚拟机标志
可选项及默认值 | 描述 |
---|---|
XX:+UnlockExperimentalVMOptions | 解锁试验性虚拟起标志 |
-XX:G1MixedGCLiveThresholdPercent | |
-XX:G1HeapWastePercent | |
-XX:G1MixedGCCountTarge | |
-XX:G1OldCSetRegionThresholdPercent | 设置老年代可回收的阀值 |
关于堆内存满的问题
可以优化的点
1: 目标时间,设置短一点,减少吞吐量,但增加稳定行
2:增加并行标记时间-XX:ConcGCThreads=n,但一般为可能太大。
1 | 触发Full GC |
参考资料:
1 | https://blog.csdn.net/u013380694/article/details/83341913 |