JVM参数交流平台,小程序--> JVMPocket
-
Trace跟踪参数
参数 | 说明 |
---|---|
-verbose:gc -XX:+printGC |
可以打印GC的简要信息 [GC 4790K->374K(15872K), 0.0001606 secs] |
-XX:+PrintGCDetails | 打印GC详细信息 |
-XX:+PrintGCTimeStamps | 打印CG发生的时间戳 例: [GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] |
-Xloggc:log/gc.log | 指定GC log的位置,以文件输出 |
-XX:+PrintHeapAtGC | 每次一次GC后,都打印堆信息 |
-XX:+TraceClassLoading | [Loaded java.lang.Object from shared objects file] [Loaded java.io.Serializable from shared objects file] [Loaded java.lang.Comparable from shared objects file] [Loaded java.lang.CharSequence from shared objects file] [Loaded java.lang.String from shared objects file] [Loaded java.lang.reflect.GenericDeclaration from shared objects file] [Loaded java.lang.reflect.Type from shared objects file] |
-Xmx –Xms | 指定最大堆和最小堆,Java会尽可能维持在最小堆 |
-Xmn | 设置新生代大小 |
-XX:NewRatio | 新生代(eden+2*s)和老年代(不包含永久区)的比值 4 表示 新生代:老年代=1:4,即年轻代占堆的1/5 |
-XX:SurvivorRatio | 设置两个Survivor区和eden的比 8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10 |
-
堆的分配参数
参数 | 说明 |
---|---|
-XX:+HeapDumpOnOutOfMemoryError | OOM时导出堆到文件 |
-XX:HeapDumpPath=c:/a.dump | 导出OOM的路径 |
-XX:OnOutOfMemoryError | 在OOM时,执行一个脚本 -XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p 当程序OOM时,在D:/a.txt中将会生成线程的dump,可以在OOM时,发送邮件,甚至是重启程序 |
-XX:PermSize -XX:MaxPermSize | 设置永久区的初始空间和最大空间,他们决定一个系统可以容纳多少个类型 |
官方推荐新生代占堆的3/8
幸存代占新生代的1/10
在OOM时,记得Dump出堆,确保可以排查现场问题
-
栈的分配参数
参数 | 说明 |
---|---|
-Xss | 通常只有几百K,决定了函数调用的深度,每个线程都有独立的栈空间,局部变量、参数 分配在栈上 |
JAVA_OPTS="-server -Xms4g -Xmx4g -Xmn2500m -Xss1024K -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"