jvm常用参数说明 - shenjiejiehs/docs GitHub Wiki
Java进程常用参数说明
查看JDK参数
查看并行收集线程
/usr/jdk1.8.0_101/bin/java -server -Xmx1024m -Xms1024m -XX:+UseConcMarkSweepGC -XX:+PrintFlagsFinal -version| grep ParallelGCThreads
内存控制参数
参数名 | 说明 |
---|---|
-Xms128m | 初始的内存 |
-Xmx256m | 最大堆内存 |
-Xmn128m | 设置新生代内存,和NewRatio有相同的作用,可以不用设置 |
-Xss256k | 线程栈Stack Space,一般情况下可以给256k,实测最小228k,JDK默认给的是1MB的内存 |
如果多层递归发现StackOverFlow,可以适当调大,调小这个参数可以开启更多的线程 | |
-XX参数
-XX后面有部分参数可以跟+或者-,+表示开启,-表示禁用
比如
-XX:+UseGCOverheadLimit,就表示GC时间过长抛OOM
-XX:-UseGCOverheadLimit,就表示GC时间过长不要抛OOM
参数名 | 说明 |
---|---|
-XX:PermSize=64m | 初始的永久区大小,<=JDK7可用 |
-XX:MaxMaxPermSize=128m | 最大的永久区大小,<=JDK7可用 |
-XX:MetaspaceSize=64m | 初始的永久区大小,>=JDK8可用 |
-XX:MaxMetaspaceSize=256m | 最大的永久区大小,>=JDK8可用 |
-XX:NewRatio=1 | 新生代占1/2,默认情况,新生代占1/3,公式为1/(1+n) |
-XX:-UseBiasedLocking | 取消偏向锁,在synchronized上的 优化,取消对性能有提升 |
-XX:AutoBoxCacheMax=20000 | Integer i = 3;这语句有着 int自动装箱成Integer的过程,JDK默认只缓存 -128 ~ +127的int 和 long |
-XX:+PerfDisablesharedMem | 禁止在/tmp/hperf[用户名] 路径上写入进程统计文件,jps,jstat,远程查看jvm状态也不能用了 |
-XX:-UseGCOverheadLimit | 限制GC的运行时间。如果GC耗时过长,就抛OOM |
-XX:-OmitStackTraceInFastThrow | 2W次异常后,不打印异常栈,建议禁用,不方便查问题 |
-XX:+UseParNewGC | 新生代并行收集 |
-XX:+UseConcMarkSweepGC | 老年代并发收集 |
-XX:CMSInitiatingOccupancyFraction=75 | 老年代收集的触发的比例 |
-XX:+UseCMSInitiatingOccupancyOnly | 强制使用上面的触发比例 |
-XX:MaxTenuringThreshold=2 | 对象在Survivor区熬过多少次Young GC后晋升到年老代 |
-XX:+HeapDumpOnOutOfMemoryError | 如果出现OutOfMemory,dump内存到文件中,默认情况下dump到当前用户目录 |
-XX:HeapDumpPath=/home/checkin/dump | 指定dump的目录 |
-XX:+ExplicitGCInvokesConcurrent | 显式的System.gc()的调用会使用CMS方式 |
-XX:+DisableExplicitGC | 不允许显式调用System.gc(),此选项最好不要加,有些堆外内存分配依赖显式 gc 调用,关闭之后容易导致 OOM |
-XX:+PrintGCDetails | 打印GC详细情况 |
-XX:+PrintGCDateStamps | 打印GC的时间戳 |
-verbose:gc | 打印gc日志 |
-Xloggc:gc.log | 日志存放在当前路径下,文件名为gc.log,可以使用相对路径和绝对路径 |
JDK1.7及以下版本参数
-Xms128m -Xmx512m -Xss256k -server -XX:PermSize=32m -XX:MaxPermSize=256m -XX:NewRatio=1 -XX:-UseBiasedLocking -XX:AutoBoxCacheMax=20000 -XX:-UseGCOverheadLimit -XX:-OmitStackTraceInFastThrow -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:MaxTenuringThreshold=2 -XX:+HeapDumpOnOutOfMemoryError -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log
JDK1.8及以上版本参数
-Xms128m -Xmx512m -Xss256k -server -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=256m -XX:NewRatio=1 -XX:-UseBiasedLocking -XX:AutoBoxCacheMax=20000 -XX:-UseGCOverheadLimit -XX:-OmitStackTraceInFastThrow -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:MaxTenuringThreshold=2 -XX:+HeapDumpOnOutOfMemoryError -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log
参考
关键业务系统的JVM参数推荐(2016热冬版) http://calvin1978.blogcn.com/articles/jvmoption-2.html
JVM调优总结 -Xms -Xmx -Xmn -Xss http://unixboy.iteye.com/blog/174173/
java高分局之JVM命令参数大全(高级垃圾回收选项)http://blog.csdn.net/maosijunzi/article/details/46562489