首先第一步通过top指令检查cpu占用情况
在执行top指令后按【1】可以打开cpu列表,【shift+p】可以按照cpu排序
可以看到我们的Java进程id是2689
第二部通过指令获取Java进程下的线程信息
top -H -p 2689
第三步我们以2690为例通过命令转换为十六进制
printf %x 2690
第四步通过命令查询相关信息
jstack 2689 |grep -a a82
这样如果你的代码有问题的话就会打印出相关问题信息
在网上看到另外一种使用jstack的方法,不过还没有验证过,这里先记录一下
ps -ef|grep java
通过cd命令进入到bin下,通过命令jstack <pid>查看信息
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
这个还没学习,以后有机会继续更新