1.查看JVM初始参数
java -XX:+PrintFlagsInitial -version
2.查看JVM被修改过的参数
java -XX:+PrintFlagsFinal -version | grep ":"
java -XX:NewRatio=4 -XX:+PrintFlagsFinal -version | grep ":"
3.查看JVM被修改过的参数
java -XX:+PrintCommandLineFlags -version
4.NewRatio
-XX:NewRatio=2 表示老生代与新生代的比例为:2:1
即老生代占整个堆内存的2/3,新生代占整个堆内存的1/3
如果设置了-Xmn=xx,整个NewRatio参数无效
5.SurvivorRatio
-XX:SurvivorRatio=8 表示Eden与幸存区 Survivor的比例为:8:1:1
即Eden占占新生代的8/10,两个Survivor个占新生代的1/10
6.通过jinfo动态调整JVM参数
jinfo -flag +PrintGCDetails pid
jinfo -flag +PrintGCDateStamps pid
7.GC日志输出,并可以使用GCViewer查看GC情况
java -Xms1024M -Xmx1024M -Xmn100M -XX:+PrintGCDetails -XX:+PrintGCDateStamps Xloggc:gc.log Test
8.发生OOM时保持堆文件
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/logs Test
jhat java_pid208.hprof
9.jmap
jmap -heap pid
jmap -histo:live pid
jmap -dump:live,format=b,file=a.bin 7612
jhat a.bin
10.-XX:-OmitStackTraceInFastThrow
对异常信息进行优化,在执行若干次后会将异常吞掉。
JDK5、6、7异常次数为:20707
JDK8异常次数为:115717
-XX:+OmitStackTraceInFastThrow -> 开启优化
-XX:-OmitStackTraceInFastThrow -> 禁止优化