1,jps
查看 java 进程, 得到进程 ID:7854
作用等同于: ps -ef | grep java
2,jstat
监视虚拟机各种运行态信息
常用: jstat -gcutil PID, 监视 java 堆状况
远程机器上无法直接使用 jstat 命令, 解决方法参考:
chroot --userspec=99:99 / sh -c 'jstat -gcutil 7854'的输出如下:
S0:Survivor0 区已使用空间的百分比
?S1:Survivor1 区已使用空间的百分比
?E:Eden 区已使用空间的百分比
?O: 老年代已使用空间的百分比?
P: 永久代已使用空间的百分比?
YGC: 从应用程序启动到采样时发生 Young GC 的次数
?YGCT: 从应用程序启动到采样时 Young GC 所用的时间 (单位秒)
?FGC: 从应用程序启动到采样时发生 Full GC 的次数
?FGCT: 从应用程序启动到采样时 Full GC 所用的时间 (单位秒)?
GCT: 从应用程序启动到采样时发送 GC 的总时间 (单位秒)
3,jstack
生成虚拟机当前时刻的线程快照
jstack PID | grep 16 进制线程 ID 查看线程信息
比如要到 java 进程中最消耗 CPU 的那个线程的信息:
(1)top -Hp 7854
找到最耗 CPU 的线程 ID 是 7975
(2)printf '%x\n' 7975
把该线程 ID 转为 16 进制, 为 1f27
(3)chroot --userspec=99:99 / sh -c 'jstack 7854 | grep -A 20 1f27'
输出线程的堆栈信息
可以看到是 cat 中的程序
来源: http://www.bubuko.com/infodetail-2945555.html