转自:https://www.cnblogs.com/saiQsai/p/10353044.html
1、jps
查看java进程,得到进程ID:7854
作用等同于:ps -ef | grep java
2、jstat
监视虚拟机各种运行态信息
常用:jstat -gcutil PID,监视java堆状况
远程机器上无法直接使用jstat命令,解决方法参考:https://wiki.sankuai.com/pages/viewpage.action?pageId=841802032
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中的程序