常用JVM诊断命令

2019-08-12  本文已影响0人  慢游世界

top

使用top主要查看各进程CPU、内存使用情况。

top命令截图
top -Hp pid 还可以定位到某个具体线程,测试使用发现内存那列都是一样的(都显示的进程占用的内存),而CPU是不一样的,所以top -Hp pid可以查看每个线程的CPU占用情况。
top -Hp pid命令截图
当进程CPU占用比较高时,可以查看具体哪个线程使用CPU比较高,再通过jstack pid |grep tid的十六进制 -A 30查看线程堆栈信息,从而定位导致CPU占用较高的代码。

jmap

jmap可以查看堆内存初始化配置信息以及堆内存的使用情况。


jmap -heap pid命令截图

我们可以使用 jmap -histo[:live] pid 查看堆内存中的对象数目、大小统计直方图,如果带上 live 则只统计活对象。


jmap -histo[:live] pid命令截图
还可以使用jmap -dump:format=b,file=name.dump pid 导出dump文件,用visualVM软件进行分析。
当发生内存溢出或老年代占用率过高,可以使用以上命令分析。

jstat

jstat -option可以监测 Java 应用程序的实时运行情况,包括堆内存信息以及垃圾回收信息,具体选项如下:

jstack

jstack pid经常用来查看线程的堆栈信息,通常结合top -Hp pidpidstat -p pid -t来使用,比如通过top -Hp pid定位到了CPU使用率高的线程,再使用jstack pid可以定位CPU使用率高的代码。

jstack pid命令截图
上一篇 下一篇

猜你喜欢

热点阅读