Linux 下java定位CPU占用过高

作者: 陈俊飞 分类: Linux 发布时间: 2018-04-09 10:14

top

查看java进程

ps -mp 22852 -o THREAD,tid,time  查看进程的线程

printf “%x\n” 22888 转换线程到16进值

jstack 22852 |grep 5968 -A 50  查看占用CPU高的进程线程详情

如果没有业务代码,出现的GC

查看GC的内存分配

jstat -gcutil 22852 2000 10 

Usage: jstat -help|-options

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数解释:

Options — 选项,我们一般使用 -gcutil 查看gc情况

vmid    — VM的进程号,即当前运行的java进程号

interval– 间隔时间,单位为秒或者毫秒

count   — 打印次数,如果缺省则打印无数次

 

S0  — Heap上的 Survivor space 0 区已使用空间的百分比
S1  — Heap上的 Survivor space 1 区已使用空间的百分比
E   — Heap上的 Eden space 区已使用空间的百分比
O   — Heap上的 Old space 区已使用空间的百分比
P   — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

输出

jstack 22852 >>jstack.out

分析jstack.out中的

用编辑器查找带有项目目录并且线程状态是RUNABLE的相关信息

 

https://www.jianshu.com/p/3667157d63bb