Linux系统下查看JVM进程信息
最近在调试公司的CS改造程序,发现当客户端运行一段时间后会造成CPU占用率过高卡死的现象。因为某些原因我发到现场亲自调试。就顺便学习一下Linux下怎么抓取JVM中某一线程的运行情况。
- 查看java进程的pid。(定位目标)
- 使用jmap查看JVM heap dump信息。(初步判断JVM资源使用情况)
- 通过top命令查看进程CPU使用情况 。
- 通过top名称查看进程的线程id
- 通过jstack来查看对应线程情况。
一步一步来看:
1.使用jps查看java的进程ID(我预先跑了一个jar包程序)
进程ID为31300
2. 使用 jmap -dump:live,file=b.map pid 生成javaa堆存储快照。
使用 jmap -heap PID 生成java堆的详细信息、使用 jmap -histo PID 生成java堆中对象的相关信息,包含数量以及占用的空间大小
对象信息太多就不展示了。
3.使用top命令来查看cup使用情况
然后使用top -p PID -H 来把我们关心的进程的线程摘出来
4.最后使用jstack命令来查看我们的线程情况。
上一步我们使用top命令查看到的进程pid要转化成16进制的,然后使用jstack pid|grep 16进制的线程id 来查看 我们关注的线程的信息。
我这里查看31312的线程信息 转化成16位为7a50
这就是线程的信息。