疑问:

在linux中,使用top命令,发现某java进程占用CPU较高,如何定位到是那个线程,执行哪些代码导致的呢?

第一步:找到占用CPU较高的进程号,使用top命令查看。


从上图可以看到,java进程号为759的进程占用cpu特别高。


第二步:查看当前进程759所有线程占用cpu情况

使用top –Hp pid 来查看,shift + t命令展示或关闭线程情况。


从上图,可以看出760的java线程占用CPU较高。


第三步:查看760线程的堆栈信息。

使用命令 jstack 759 | grep –A 100x2f8

其中jstack是java命令,可以在JDK bin目录找到该命令。759为上述 java进程号,-A表示查询到所在行后10行。0x2f8是java线程760转化为十六进制,注意全部转化为小写。


如上图,打印了java堆栈信息,可以根据堆栈信息,检查代码,查找并分析占用CPU过高原因。






更多相关文章

  1. 重新认识Java线程的概念
  2. java线程实现与进程(二)
  3. java多线程jdk1.7与jdk1.6结果不一致的问题
  4. Java线程的生命周期和状态控制
  5. 使用线程设置后台进程以处理Android中的工作
  6. Android开发之线程与线程池
  7. Android多线程下载远程图片【转】
  8. 理解Android的本地Service和跨进程Service
  9. android init进程分析 ueventd — 设备节点的创建、固件更新过

随机推荐

  1. RedHat6.0下源码安装MySQL5.5.27
  2. PB怎么将动态的sql语句以及数组。传给dat
  3. CentOS 6.7 x64 MySQL 5.7.9 编译安装
  4. mysql 中show 命令用法详细介绍 mysql过
  5. 仅在SQL Server数据库中显示包含3个单词
  6. Jmeter—8 连接microsoft sql server数
  7. 在Linux环境下,将Solr部署到tomcat7中,导入
  8. 安卓+servlet+MySql 查询+插入(汉字乱
  9. PostreSQL崩溃试验全记录
  10. 基于Sqlcipher和GreenDao的数据库加密