【小问题集02】-jdk问题定位工具箱-线程挂死、堆栈满问题定位

1-前言

开发过程中,偶尔会遇到一些线程池占满、cpu使用过高、堆栈满了的问题,需要进一步分析线程具体位置,从而做进一步分析,现将linux和jdk自带的一些线程调试手段总结如下,供用户尽一份分析。

更多内容:

2- 定位手段

2.1java visualVM图形化工具

linux控制器后天敲入命令jvisualvm,可以打开jdk自带的图形化调试和分析工具,通过此工具,可以看到当前运行的所有jdk程序,并查看到程序中线程、cpu占用、内存使用统计。

在这里插入图片描述

2.2 jdk命令行定位cpu过高、内存过高线程

  1. 使用jps命令查看目前正在运行的所有线程;
  2. 使用top命令查看线层cpu、内存占用情况;
  3. 找到指定线程号,将其转换为十六进制数字;
  4. 使用jstack命令并配合过滤条件找到指定线程堆栈打印。
####1-使用jps命令查看目前正在运行的所有线程;
dd@dd:~/00-RUN/odl/karaf-0.8.3/bin$ jps
19872 Jps
3329 RemoteMavenServer
2933 Main
8629 Launcher
11101 Main

####2-使用top命令查看线层cpu、内存占用情况;
top -Hp 11101
---------------------------------------------------------------------
top - 13:52:16 up 1 day,  4:22,  1 user,  load average: 0.46, 0.66, 0.56
Threads: 127 total,   0 running, 127 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.7 us,  1.4 sy,  0.0 ni, 94.8 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8051608 total,   403864 free,  5388188 used,  2259556 buff/cache
KiB Swap:  8269820 total,  8269820 free,        0 used.  1951408 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                          
11218 fwd       20   0 6080792 1.241g  18272 S  3.3 16.2   8:40.63 java                                 
11231 fwd       20   0 6080792 1.241g  18272 S  0.7 16.2   0:47.92 java                                 
11101 fwd       20   0 6080792 1.241g  18272 S  0.0 16.2   0:00.00 java                                 
11102 fwd       20   0 6080792 1.241g  18272 S  0.0 16.2   0:01.64 java           ---------------------------------------------------------------------
####3-找到指定线程号,将其转换为十六进制数字;
dd@dd:~/00-RUN/odl/karaf-0.8.3/bin$ printf "%x\n" 11231
2bdf
####4-使用jstack命令并配合过滤条件找到指定线程堆栈打印。
dd@dd:~/00-RUN/odl/karaf-0.8.3/bin$ jstack -l 11101 | grep 2bdf
"opendaylight-cluster-data-scheduler-1" #120 prio=5 os_prio=0 tid=0x00007f1df4c7c000 nid=0x2bdf sleeping[0x00007f1de1f41000]
---------------------------------------------------
####替代方式:
##直接筛选查看上下文详情
jstack -l 11101 | grep -A 20 -B 20 2bdf
##冲定向到文件搜索挂关键词查看
jstack -l 11101 > log.log

2.3 更多方式:待后续分析

https://www.cnblogs.com/duanxz/p/4515437.html

猜你喜欢

转载自blog.csdn.net/xinquanv1/article/details/83786449