找到最耗CPU的java线程

原创 2013年12月05日 16:06:40

 

 

找到最耗CPU的java线程

1 找出占用cpu过高的进程ID号

   命令: top -c
  
 

 

 

 2 找出该进程下,运行时间过长的进程 id号.

     命令:ps -mp 10024 -o THREAD,tid,time | sort -rn


 
 

 

 3 因为在java堆栈日志中,线程id以 16 进程存储,因此我们需要先把 10 进制的线程id,转为 16 进制.

   命令:printf "%x\n" 11490
 
 

 

4 通过 jdk自带的jstack工具,打印堆栈异常信息.

   通过 printf "%x\n" 30834 首先转化成16进制, 继续通过jstack命令dump出当前的jvm进程的堆栈信息。 通过Grep命令即可以查到对应16进制的线程id信息,很快就可以找到对应最耗CPU的代码快在哪。

   命令:sudo ./jstack 10024|grep 2ce2 -A 30
 
 

 

Java代码  收藏代码
  1. "DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]  

nid : 对应的linux操作系统下的tid,就是前面转化的16进制数字

tid: 这个应该是jvm的jmm内存规范中的唯一地址定位,如果你详细分析jvm的一些内存数据时用得上,我自己还没到那种程度,所以先放下

 

 

 

 

  • 5ccc4633-043e-321a-947b-169ee47661ce-thumb.png
  • 大小: 92.6 KB
  • 64f2bb88-7ae1-395e-845c-83ddfa87b891-thumb.png
  • 大小: 30.8 KB
  • 0bdd9cd1-402c-30c6-9399-e677a76e5635-thumb.png
  • 大小: 5.7 KB
  • cd278806-e4e1-37f9-b931-e5ee8247e59b-thumb.png
  • 大小: 132.8 KB

如何揪出java程序占用cpu过高的线程代码

windows下的解决办法1、下载Process Explorer并安装, 该工具可以查看进程下的线程cpu占用率2、打开Process Explorer, 找到java程序, 我们可以看到java程...
  • xlxxcc
  • xlxxcc
  • 2016年04月11日 14:32
  • 3588

分析java程序中cpu占用过高的线程

http://www.cnblogs.com/skyaccross/archive/2012/12/22/2829000.html 收到服务器报警,服务端的一个java服...
  • jgwei
  • jgwei
  • 2013年09月27日 08:35
  • 19773

JAVA的线程可以在多个CPU上运行么?

这个是我一个技术相当好的哥们去面试的时候碰到的奇葩问题,那天,这个面试官的答案是不能。后来就带着这个问题去国内外的论坛上搜了一把,也是各说纷纭,实在是没有一个统一的答案,简直有点公说公有理,婆说婆有理...
  • ziwen00
  • ziwen00
  • 2014年07月24日 23:18
  • 7585

top命令找到占用CPU最高的java线程

参考 http://lxiaodao.iteye.com/blog/1413774 和长源 28147是java的进程号,通过jps命令查出来的 top -Hp 28174 -d 1 -n ...
  • arkblue
  • arkblue
  • 2013年03月26日 00:09
  • 10361

分析java程序中cpu占用过高的线程

查看服务器操作困难,服务端的一个java服务占用cpu200%多。该服务里面跑了很多线程,于是想找到是谁引起的 1、首先dump出该进程的所有线程及状态 使用命令 jstack PID 命令打印出CP...
  • huaishu
  • huaishu
  • 2013年07月01日 19:02
  • 1679

java获取JVM的CPU占用率、内存占用率、线程数及服务器的网口吞吐率、磁盘读写速率

运行环境:jdk 1.8 + tomcat 7 + Spring 4.3 tomcat 容器启动及进入init()进行JVM PID的获取及执行任务 可能会碰到的问题:无法引入com.sun.m...

JAVA线程CPU占用率过高分析方法

分析java线程CPU占用率过高的方法和步骤

JAVA线程引起的CPU满负载

做项目时,第一次遇到了CPU满负荷运作的情况,CPU利用率100%。虽然遇到了问题,但是觉得自己写程序居然都能让CPU满负荷运行,自己的水平已经到了需要考虑软件的效率问题的阶段了。这比以前写的完全不会...

创建Java线程模型并减少CPU周期

创建Java线程模型并减少CPU周期   Java运行时系统依赖于线程的很多事情,所有的类库的设计与多线程的初衷。事实上,Java使用的线程,以使整个环境是异步的。这有助于通过防止CPU周期的浪费减少...
  • Madhur1
  • Madhur1
  • 2014年07月31日 15:57
  • 242

Java线程CPU亲和性工具

Thread Affinity为什么需要线程的CPU亲和性应用通过多线程的方式执行,多数情况下线程能够被合理的调度。但在某些情况下某个重要的线程被暂停,而时间片被分配给了一个无关重要的线程。当一个线程...
  • liu251
  • liu251
  • 2015年05月03日 22:30
  • 4700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:找到最耗CPU的java线程
举报原因:
原因补充:

(最多只允许输入30个字)