生产配置
4C8G
参数
-Xmx6g
-Xms6g
-XX:MetaspaceSize=512m
-XX:NewRatio=1
-Xss256k
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/export/logs/app-name/heapdump.hprof
-XX:+UnlockExperimentalVMOptions
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:MaxTenuringThreshold=6
-XX:+ExplicitGCInvokesConcurrent
-XX:+ParallelRefProcEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=1
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-Xloggc:/export/logs/app-name/gc.log
参数说明
-Xmx6g
最大堆大小
-Xms6g
初始堆大小
-XX:MetaspaceSize=512m
原空间大小
-XX:NewRatio=1
设置年轻代和年老代的比值,如果为3,表示年轻代与老年代比值为1:3,默认值为2
-Xss256k
规定了每个线程虚拟机栈及堆栈的大小,一般情况下,256k是足够的,此配置将会影响此进程中并发线程数的大小
-XX:+HeapDumpOnOutOfMemoryError
参数表示当JVM发生OOM时,自动生成DUMP文件
-XX:HeapDumpPath=/export/logs/app-name/heapdump.hprof
参数表示当JVM发生OOM时,自动生成DUMP文件,dump文件路径
-XX:+UnlockExperimentalVMOptions
解锁实验参数,允许使用实验性参数,JVM中有些参数不能通过-XX直接复制需要先解锁,比如要使用某些参数的时候,可能不会生效,需要设置这个参数来解锁,一般使用在一些低版本jdk想使用高级参数或者可能高版本有的参数情况;
-XX:+UseConcMarkSweepGC
使用CMS垃圾回收器
-XX:CMSInitiatingOccupancyFraction=75
是指设定CMS在对内存占用率达到75%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);
-XX:+UseCMSInitiatingOccupancyOnly
只是用设定的回收阈值(上面指定的75%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整;
-XX:MaxTenuringThreshold=6
JAVA进程启动的时候,虽然我们可以为JVM指定合适的内存大小,但是这些内存操作系统并没有真正的分配给JVM,而是等JVM访问这些内存的时候,才真正分配,这样会造成以下问题。
-XX:+ExplicitGCInvokesConcurrent
触发full gc
-XX:+ParallelRefProcEnabled
表示在初始标记的时候多线程执行,缩短STW
-XX:+CMSParallelRemarkEnabled
在重新标记的时候多线程执行,缩短STW;
-XX:+UseCMSCompactAtFullCollection
FullGC之后做压缩整理(减少碎片)
-XX:CMSFullGCsBeforeCompaction=1
多少次FullGC之后压缩一次,默认是0,代表每次FullGC后都会压缩一次
-XX:+PrintGCDetails
用于打印输出详细的GC收集日志的信息.
-XX:+PrintGCDateStamps
输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintGCTimeStamps
输出GC的时间戳(以基准时间的形式)
-Xloggc:/export/logs/app-name/gc.log GC
日志输出路径