jps:输出JVM中运行的进程状态信息
jps [options] [hostid]
-v 输出传入JVM的参数
jstack:查看线程堆栈信息,可以以此定位到具体代码
jstack [options] [pid]
-l 输出锁持有情况
-m 输出包含Java和Native方法的堆栈信息
利用jstack命令的一个排查案例:
1)top -c 找出所在程序pid
2)ps -Lfp [pid] / ps -mp [pid] -o THREAD, tid, time / top -Hp [pid] 找出最耗费CPU的线程id,记作thread_id
3)printf "%X" [thread_id] 转换为十六进制,记作x_num,备用
4)jstack [pid] |grep [x_num] 找出CPU消耗的主要代码,包括类和方法名称
jmap:导出堆内存,用jhat分析,打印进程的类加载器和类加载器加载的持久带对象信息等
jmap [options] pid
jmap -heap [pid] 查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和个贷中堆内存使用情况
jmap -histo[:live] [pid] 查看对内存中[存活]的对象数目、大小统计直方图
利用jmap做dump文件排查的案例:
jmap -dump:format=b,file=/path/dump.dat [pid] 导出dump文件
jhat -port 9900 /path/dump.dat 指定jhat分析结果访问路径,通过9900端口在浏览器查看
jstat:查看JVM堆区域的内存GC情况
jstat -gc [pid] [gap_time] [sample_count]
jstat结果的一些说明:
S0C/S0U S0区域的容量/使用量
S1C/S1U S1区域的容量/使用量
EC/EU Eden区域的容量/使用量
OC/OU 年老代区域的容量/使用量
PC/PU 永久代容量/使用量
YGC/YGCT 年轻代GC次数/GC耗时
FGC/FGCT FullGC次数/GC耗时
GCT GC总耗时
原创不易,转载请保留原链接。