逃逸分析提高性能:-XX:+DoEscapeAnalysis
jstatdvm监控
vim /opt/apps/jstatd/java.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
jstatd -J-Djava.security.policy=/opt/apps/jstatd/java.policy >/opt/apps/jstatd/java.log &
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.156 &
vim restart.sh
-Dcom.sun.management.jmxremote.port=6001 -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
JVM命令
jmap -dump:format=b,file=outfile 3024 输出dump文件
jmap -heap 24668 内存分析
jmap -permstat 28842 在触发之前,先用jmap -histo pid统计下对象的数量
jmap -histo:live 触发Full GC之后 统计存活的对象数量
jstat -gcutil 340 10000 观察分析jvm内存的gc情况
gc日志
5.617(时间戳): [GC(Young GC) 5.617(时间戳): [ParNew(使用ParNew作为年轻代的垃圾回收期): 43296K(年轻代垃圾回收前的大小)->7006K(年轻代垃圾回收以后的大小)(47808K)(年轻代的总大小),
0.0136826 secs(回收时间)] 44992K(堆区垃圾回收前的大小)->8702K(堆区垃圾回收后的大小)(252608K)(堆区总大小), 0.0137904 secs(回收时间)] [Times: user=0.03(Young GC用户耗时)
sys=0.00(Young GC系统耗时), real=0.02 secs(Young GC实际耗时)]
打印GC
-verbose:gc -XX:+PrintGCDetails