JVM GC方法 | ParallelGC:1.8默认,高吞吐量,响应时间不敏感 CMS:响应优先,堆内存8G以下优先选择 G1:响应优先,堆内存8G及以上选择 | 高并发快响应应用:8G及以上选择G1,8G以下选择CMS 并发不明显,响应要求不高应用:推荐使用ParallelGC |
Xmx | 堆的最大值 | 小于8G的,不超过50% 8G的,最多可以设置6G 12G的,最多设置为8G 16G的,最多设置为12G 32G的,最多设置为24G |
Xms | 初始堆的大小,也是堆大小的最小值 | 与Xmx一致 |
MaxDirectMemorySize | 堆外内存大小 | 一般无需配置 使用了OHC等堆外缓存的需要配置 |
ParallelGCThreads | 并行GC时的线程数(ParallelGC、CMS、G1均适用) 此值过小,则stw时间变长,此值过大,影响吞吐量,CPU过高 | 建议容器核数 |
ConcGCThreads | 并发标记时的线程数 并发标记时并没有stw,CPU密集型任务(CMS、G1才有并发标记步骤) | 限CMS、G1配置 ParallelGCThreads的20%~50% 一般为ParallelGCThreads/4或ParallelGCThreads/2 |
CICompilerCount | JIT进行热点编译的线程数 CPU密集型任务 | 推荐值如下: 1C容器 : 2 2C容器:2 4C容器 : 2~4 8C容器:2~4 16C容器 : 4~12 |
MetaspaceSize MaxMetaspaceSize | 元空间初始大小、元空间最大大小 如果未指定初始大小,默认是20m,应用启动时如果不够就会gc来扩容 元空间并不在虚拟机中,而是使用本机内存,因此受本机内存限制 | jdk1.8适用, 需要大于256M |
Xmn NewRatio | Xmn:新生代内存大小 NewRatio:老年代与新生代与内存容量的比例 x:1 这2个参数只需设置其中1个即可,若都设置了,以Xmn为准 | CMS只需配置其中1个参数;Xmn=堆内存Xmx的 1/3 NewRatio=2 |
UseCMSInitiatingOccupancyOnly CMSInitiatingOccupancyFraction=x | CMSInitiatingOccupancyFraction为堆内存占用率达到百分比时开始GC的阈值 默认不设置时,由JVM自动计算垃圾回收的周期 | CMS设置 推荐值70~80 |
UseCMSCompactAtFullCollection CMSFullGCsBeforeCompaction=x | CMSFullGCsBeforeCompaction为配置fullGC时,进行了多少次fullGC之后对老年代进行压缩整理处理碎片 | CMS专用推荐值1 |