Hello World

吞风吻雨葬落日 欺山赶海踏雪径

0%

常用JVM参数

常用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