java应用性能分析
dump内存信息
- 通过jps -lm找到进程id
- jmap -dump:format=b,file=./heap.hprof <pid>
- 使用jprofile等分析内存占用情况
dump线程信息
- 通过jps -lm找到进程id
- jstack <pid> > thread.txt
Java飞行记录器
- 通过jps -lm找到进程id
- 通过jcmd <pid> VM.check_commercial_features查看是否解锁商业feature
- 通过jcmd <pid> VM.unlock_commercial_features来解锁商业feature
- 通过jcmd <pid> JFR.start name=10min.jfr settings=profile delay=3s duration=5m filename=./10_min.jfr compress=true来收集10分钟内的数据
- 使用jmc等工具分析jfr数据
JDK Mission Control
JMC工具用于分析jfr数据,通过直接jmc命令启动。如果您在启动JMC后无法操作界面,可能遇到了java8下的bug。
常见命令
- jcmd <pid> GC.run 触发full gc,当配置-XX:+DisableExplicitGC时不管用
- jmap -histo:live <pid> 触发full gc
参考
- http://www.mamicode.com/info-detail-2422833.html
- https://stackoverflow.com/questions/53882496/openjdk-jdk11-not-having-jmc-java-mission-controller-flightrecorder
- https://github.com/JDKMissionControl/jmc
- https://www.infoq.cn/article/Troubleshooting-Java-Memory-Issues
- http://xxfox.perfma.com/jvm/check 检查jvm参数合理性