本文主要是介绍linux中无jstack、java程序cpu占用过高,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一种是没有找到linux服务器jdk的具体位置
实际上java是个软连接,在继续跟进
这个实际才是jdk的实际目录,在目录中可以找到jstack
第二种是安装的jdk 没有jstack
首先查看 yum源 yum whatprovides '*/jmap'查看可安装版本 或者自己直接安装一个新的jdk版本,我选择的是 yum install java-1.8.0-openjdk-devel-debug-1.8.0.171-8.b10.el6_9.x86_64
进入目录/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el6_9.x86_64-debug/bin可以查看到jstack
重点操作:top -H -p 19607(换成你的pid)查看哪个线程占用cpu不正常
查询pid(将紫色部分替换): /root/jdk1.8.0_172/bin/jps -l| awk '{print $2,$1}'|grep -i '^collector-2.0-fat.jar'|awk '{print $2}'
pid19608的线程占用cpu过大 printf "%x\n" 19608(线程pid) 将线程转成16进制,用jstack pid查看线程
./jstack 19607查看具体问题
找到记录 能定位你的代码
如果queue为空,长时间运行就会出问题了 continue换成break 修改后代码
这篇关于linux中无jstack、java程序cpu占用过高的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!