常用JVM参数

内存设置

参数 含义 说明
-Xms1024m 初始堆大小
-Xmx1024m 最大堆大小
-Xmn500m 年轻代大小
-Xss1024k 单个线程栈
-XX:PermSize=200m 永久代 before java8
-XX:MaxPermSize=300m 永久代 before java8
-XX:MetaspaceSize 元数据 after 8
-XX:MaxMetaspaceSize 元数据 after 8
-XX:NewRatio=4 Olden区与Young区比例 4:1
-XX:SurvivorRatio=8 Eden与Survivor区比例 8:1:1
-XX:LargePageSizeInBytes 内存页大小 JVM优化之调整大内存分页

GC设置

参数 含义 说明
-XX:+DisableExplicitGC 关闭System.gc() 慎用
-XX:MaxTenuringThreshold 晋升年龄
-XX:PretenureSizeThreshold=1024k Olden区直接分配对象临界值
-Xnoclassgc 禁用类回收
-XX:SoftRefLRUPolicyMSPerMB=1s 软引用存活秒数/每空闲MB
-XX:+UseParNewGC 并行回收YOUNG区,CMS默认搭档
-XX:+UseConcMarkSweepGC CMS回收老年代
-XX:CMSFullGCsBeforeCompaction=3 3次FullGC后,整理老年代
-XX:+CMSParallelRemarkEnabled 并行标记,降低停顿
-XX:CMSInitiatingOccupancyFraction=85 Olden区85%后开始GC
-XX:+CMSClassUnloadingEnabled 开启类卸载

调试参数

参数 含义 说明
-XX:+PrintGCDetails GC日志
-XX:+PrintGCApplicationStoppedTime GC停顿时间
-verbose:gc/class/jni 查看gc、类加载、本地方法调用
-XX:+PrintHeapAtGC 打印GC触发时的堆栈
-Xloggc:log/gc.log 输出gc log
-XX:+HeapDumpOnOutOfMemoryError 内存溢出时产生堆dump
-XX:+HeapDumpOnCtrlBreak Crtl+Break产生dump

其他

-Xverify:none 跳过编译检查
服务器推荐GC参数:
-Xloggc:gc.log
-XX:+PrintGCDetails
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime