镇楼类(终端执行):
通用类:
-XX:+PrintGC 使用这个参数,虚拟机启动后,只要遇到GC就会打印日志
-XX:+PrintGCDetails 可以查看详细信息,包括各个区的情况
-Xms:设置Java程序启动时初始化堆大小
-Xmx:设置Java程序能获得最大的堆大小
-XX:MaxTenuringThreshold 分代年龄默认值15 达到15次后会进入老年代(ZGC除外,基于分代理论的垃圾收集器通用)
XX:+UseSerialGC:串行回收器 单核(一般没用 自己比较抠开的虚拟机可以用)
日志:
Parallel Scavenge:
-XX:MaxGCPauseMillis,最大垃圾回收停顿时间。这个参数的原理是空间换时间,收集器会控制新生代的区域大小,从而尽可能保证回收少于这个最大停顿时间。简单的说就是回收的区域越小,那么耗费的时间也越小。
所以这个参数并不是设置得越小越好。设太小的话,新生代空间会太小,从而更频繁的触发GC。
-XX:GCTimeRatio,垃圾回收时间与总时间占比。这个是吞吐量的倒数,原理和MaxGCPauseMillis相同。
因为Parallel Scavenge收集器关注的是吞吐量,所以当设置好以上参数的时候,同时不想设置各个区域大小(新生代,老年代等)。可以开启**-XX:UseAdaptiveSizePolicy**参数,让JVM监控收集的性能,动态调整这些区域大小参数。
内存8G左右 .ParNew&CMS
CMS的相关核心参数
1. -XXx:+UseConcMarkSweepGC:启用cms
2. -XX:ConcGCThreads:并发的GC线程数 默认
3. -XX:+UseCMSCompactAtFullCollection: FullGC之 后做压缩整理(减少碎片)
4. -XX:CMSFullGCsBeforeCompaction:多少次FullGC之后压缩- -次。默认是0,代表每次FullGC后都会压缩一
5. -XX:CMSInitiatingOccupancyFraction:当老年代使用达到该比例时会触发FulIGC (默认是92,这是百分比)6. -XXx:+UseCMSInitiatingOccupancyOnly:只使用设定的回收阈值(-XX:CMSInitiatingOccupancyFraction设 定的值),如果不指定,JVM仅在第- -次使用设定值, 后续则会自动调整
7. -XX:+ CMSScavengeBeforeRemark:在CMS GC前启动- -次minor gc,目的在于减少老年代对年轻代的引 用,降低CMS GC的标记阶段时的开销,一般CMS的GC耗时 80%都在标记阶段
8. -XX:+ CMSParallellnitialMarkEnabled:表示在初始标记的时候多线程执行,缩短STW
9. -XX:+ CMSParallelRemarkEnabled:在重新标记的时候多线程执行,缩短STW;
10.ParNew&CMS -XX:UseParNewGC -XXx:+UseConcMarkSweepGC
模板:
使用G1 :-XX:+UseG1GC (GDK11默认就是哦)
堆的大小: -Xmx32g
最大停顿时间:-XX:MaxGCPauseMillis=200 (默认就是200 毫秒 别作死调到10 根据需求和硬件环境设定。其实200还好吧。)
设置的 G1 区域(Region)的大小:-XX:G1HeapRegionSize=n(值是 2 的幂,范围是 1 MB 到 32 MB 之间。目标是根据最小的 Java 堆大小划分出约 2048 个区域)
设置 STW 工作线程数的值:-XX:ParallelGCThreads=n(默认等于CPU核数不推荐改哦)
并行标记的线程数:XX:ConcGCThreads=n
新生代比例:新生代比例有两个数值指定,下限:-XX:G1NewSizePercent,默认值5%,上限:-XX:G1MaxNewSizePercent,默认值60%。
被纳入Cset的Region的存活空间占比阈值:通过 -XX:G1MixedGCLiveThresholdPercent 默认65%
触发全局并发标记的老年代使用占比:通过-XX:InitiatingHeapOccupancyPercent
指定,默认值45%
-XX:G1ReservePercent=n 设置堆内存保留为假天花板的总量,以降低提升失败的可能性. 默认值是 10
模板:
‐Xloggc:./gc‐%t.log ‐XX:+PrintGCDetails ‐XX:+PrintGCDateStamps ‐XX:+PrintGCTimeStamps
‐XX:+PrintGCCause XX:+UseGCLogFileRotation ‐XX:NumberOfGCLogFiles=10 ‐XX:GCLogFileSize=100M
‐XX:MetaspaceSize=512M ‐XX:MaxMetaspaceSize=512M -XX:+UseG1GC