Linux排查Java程序CPU占用问题

首先第一步通过top指令检查cpu占用情况

在执行top指令后按【1】可以打开cpu列表,【shift+p】可以按照cpu排序

Linux排查Java程序CPU占用问题_第1张图片

可以看到我们的Java进程id是2689

第二部通过指令获取Java进程下的线程信息

top -H -p 2689

Linux排查Java程序CPU占用问题_第2张图片

第三步我们以2690为例通过命令转换为十六进制

printf %x 2690

第四步通过命令查询相关信息

jstack 2689 |grep -a a82

这样如果你的代码有问题的话就会打印出相关问题信息

 

在网上看到另外一种使用jstack的方法,不过还没有验证过,这里先记录一下

ps -ef|grep java

Linux排查Java程序CPU占用问题_第3张图片 通过cd命令进入到bin下,通过命令jstack 查看信息

cd /usr/local/jdk6/jre/bin/
jstack 2689

 当没有信息的时候可以添加参数强制打印

jstack -l -F 2689

参数:

-F   当’jstack [-l] pid’没有相应的时候强制打印栈信息

-l   长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

-m 打印java和native c/c++框架的所有栈信息.

 

 

还有另外一种方式就是通过strace指令来获取相关信息

strace -p 2690

这个还没学习,以后有机会继续更新

 

你可能感兴趣的:(java基础)