8G物理内存
-Xms4096m
-Xmx4096m
-Xss256k
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=256M
-XX:MaxDirectMemorySize=1024M
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/jvm/heapdump.hprof
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/tmp/jvm/gc-%t.log
-Duser.timezone=Asia/Shanghai
-Dfile.encoding=UTF-8
4G物理内存
-Xms2048m
-Xmx2048m
-Xss256k
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=256M
-XX:MaxDirectMemorySize=1024M
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/jvm/heapdump.hprof
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/tmp/jvm/gc-%t.log
-Duser.timezone=Asia/Shanghai
-Dfile.encoding=UTF-8
参数释义
-Xms4096m #初始堆大小,建议和最大堆大小相同
-Xmx4096m #最大堆大小
-Xss256k #每个线程栈大小
-XX:MetaspaceSize=256M #元空间Full GC的阈值,并不是元空间初始值!默认值20.8M,建议和元空间最大值相同
-XX:MaxMetaspaceSize=256M #元空间最大值,避免元空间的内存溢出
-XX:MaxDirectMemorySize=1024M #最大堆外内存大小,默认和最大堆大小相同。可适量增大,例如nio使用较多时
-XX:+UseG1GC #使用G1垃圾回收器,6~8G堆内存以上推荐使用
-XX:MaxGCPauseMillis=200 #G1 GC最大停顿时间(毫秒)
-XX:+HeapDumpOnOutOfMemoryError #内存溢出时dump堆
-XX:HeapDumpPath=/tmp/jvm/heapdump.hprof #dump堆文件的路径
-XX:+PrintGCDetails #打印GC详细信息
-XX:+PrintGCDateStamps #打印执行GC的日期时间戳
-Xloggc:/tmp/jvm/gc-%t.log #GC日志文件的地址,%t:GC日志文件添加日期后缀
-Duser.timezone=Asia/Shanghai #时区
-Dfile.encoding=UTF-8 #文件编码
其它参数
GC日志文件的可选参数:
#打印自适应调整策略:会打印jvm进行自适应调整时详细的日志
-XX:+PrintAdaptiveSizePolicy
#打印GC前后堆内存情况
-XX:+PrintHeapAtGC
#打印GC时应用线程的停顿时间
-XX:+PrintGCApplicationStoppedTime
#打印安全点统计信息 打印安全点统计信息的次数。可用于分析应用线程长时间停顿的原因:如果产生的日志信息基本上STW的原因都是RevokeBias或者BulkRevokeBias撤销偏向锁操作,就算时间很短,特别频繁也会很耗时。在高并发系统中,建议禁用偏向锁,可以提升系统的吞吐量。
禁用偏向锁的参数为: -XX:-UseBiasedLocking。引起长时间STW原因:GC或者RevokeBias撤销偏向锁操作。
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1
默认垃圾回收器UseParallelGC,即 Parallel Scavenge + Parallel Old,参数:
#默认值2,old:young = 2:1,old = 2/3的堆,young = 1/3的堆。值必须是整数。
#若发现young GC频率较高,且Eden Space年轻代used较高,PS Old Generation老年代used保持在较低水平,
#即对象基本都是朝生夕灭的,为避免过于频繁的young GC,可进行调优:增大年轻代比例,
-XX:NewRatio=1