常用JVM参数
JDK8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| -server -Xms4g 初始堆内存 -Xmx4g 最大对内存 -Xmn2g 设置年轻代大小为2G 内存大小=年轻代大小 + 年老代大小 + 持久代大小 -XX:MetaspaceSize=256m Metaspace初始大小 -XX:MaxMetaspaceSize=512m Metaspace最大大小 -XX:MaxDirectMemorySize=1g 堆外直接内存 -XX:SurvivorRatio=10 eden:survivor=10,eden+2*survivor=Xmn -XX:+UseConcMarkSweepGC 使用CMS -XX:CMSMaxAbortablePrecleanTime=5000 preClean超过此时间AbortablePreclean直接触发remark -XX:+CMSClassUnloadingEnabled 清理持久代移除不使用的class -XX:CMSInitiatingOccupancyFraction=80 老年代到达此比例触发fullgc -XX:+UseCMSInitiatingOccupancyOnly 使用自定义的条件触发CMS -XX:+ExplicitGCInvokesConcurrent -Dsun.rmi.dgc.server.gcInterval=2592000000 -Dsun.rmi.dgc.client.gcInterval=2592000000 -XX:ParallelGCThreads=96 -Xloggc:/home/admin/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/logs/java.hprof -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -Dfile.encoding=UTF-8 -Dlog4j.defaultInitOverride=true
|
JDK7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| -server -Xmx4g -Xms4g -Xmn1536m -XX:PermSize=128m -XX:MaxPermSize=256m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled 降低标记停顿 -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods 原始类型的快速优化 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops 启用64位JVM中的压缩引用 -Ddatabase.codeset=ISO-8859-1 -Ddatabase.logging=false -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=GBK -Dorg.eclipse.jetty.util.URI.charset=GBK -Dhsf.publish.interval=400 -Dhsf.publish.delayed=true -Djetty.home=/usr/alibaba/jetty -jar /usr/alibaba/jetty/start.jar
|
一些参数说明
GC
-XX:+UseConcMarkSweepGC 使用并发标志扫描收集器。使用ParNew+CMS+Serial Old的收集器组合进行内存回收。如果CMS收集器出现Concurrent Mode Failure,则Serial Old收集器将作为后备收集器。
-XX:+UseCMSCompactAtFullCollection 设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用CMS收集器是生效。默认启用
-XX:CMSMaxAbortablePrecleanTime=5000 当abortable-preclean阶段执行达到这个时间时才会结束
-XX:+CMSClassUnloadingEnabled 表示在使用CMS垃圾回收机制的时候是否启用类卸载功能。垃圾回收会清理持久代,移除不再使用的classes。这个参数只有在 UseConcMarkSweepGC也启用的情况下才有用。默认不启用。
-XX:+UseCMSInitiatingOccupancyOnly 指定HotSpot总是使用-XX:CMSInitiatingOccupancyFraction的值作为old的空间使用率限制来启动CMS垃圾回收。如果没有使用-XX:+UseCMSInitiatingOccupancyOnly,那么HotSpot VM只是利用这个值来启动第一次CMS垃圾回收,后面都是使用HotSpot VM自动计算出来的值。
-XX:CMSInitiatingOccupancyFraction=80 设置CMS收集器在老年代空间被使用多少后出发垃圾收集,仅在使用CMS收集器是生效。默认68。
Heap
-XX:+HeapDumpOnOutOfMemoryError 在发生内存溢出异常时是否生成堆转储快照,关闭则不生成。默认关闭
-XX:HeapDumpPath=${LOGGER_ROOT}/java.hprof
GC log
1 2 3 4 5 6 7 8 9
| -verbose:gc -Xloggc:${LOGGER_ROOT}/gc.log -XX:+PrintGCDetails 打印GC详细信息。默认关闭 -XX:+PrintGCDateStamps 打印GC停顿耗时。默认关闭
-Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -XX:+DisableExplicitGC 参数作用是禁止代码中显示调用GC
|