JDK常用命令

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中的程序

原文地址:https://www.cnblogs.com/saiQsai/p/10353044.html