`
MauerSu
  • 浏览: 496996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java 程序消耗 cpu 100% 查找方法

 
阅读更多
源:http://kevin1.iteye.com/blog/1532716
问题原因:由于HashMap是非线程安全的,在多线程访问时,造成死循环。

查找问题方法:
1.
Java代码  收藏代码

    top 


找出最耗费cpu的进程号 如:27377

2.
Java代码  收藏代码

    top -p 27377 -H 


找出此进程下的所有线程,然后找出最耗cpu线程号 如:27433

3.
Java代码  收藏代码

    python  hex(27433)  


将十进制数转为16进制 如:0x6b29

4.
Java代码  收藏代码

    jstack 27377 >cpu.log 


将此进程号的Java堆栈信息打印到文件中

5.
Java代码  收藏代码

    grep 0x6bz8 cpu.log 


查看java堆栈中的线程nid 如:
"foundationTaskExecutor-2" prio=10 tid=0x00007f064c041000 nid=0x6b28 runnable [0x00007f069f5da000]

6.
Java代码  收藏代码

    vim cpu.log 


查找nid=0x6b28的内容 如:
Java代码  收藏代码

    "foundationTaskExecutor-2" prio=10 tid=0x00007f064c041000 nid=0x6b28 runnable [0x00007f069f5da000] 
       java.lang.Thread.State: RUNNABLE 
            at java.util.HashMap.get(HashMap.java:320) 
            at ***********************************(WareServiceImpl.java:64) 
            at ***********************************(Mid2FoundationTask.java:127) 
            at ***********************************(Mid2FoundationTask.java:27) 
            at ***********************************$FoundationThreadImpl.run(Mid2FoundationTask.java:86) 
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
            at java.lang.Thread.run(Thread.java:722) 
分享到:
评论

相关推荐

    反编译指定文件夹下的所有jar包和calss文件,并放到原目录结构中(本项目是java开发的项目使用了springboot框架)

    1.此工具会查找目标文件夹下所有jar包,并解压到源文件目录 2.没有解压到其他目录是...9.此程序为提高效率使用到多线程,对cpu消耗比较大,请注意机器散热 10.因为程序要做大量的读写删除等io操作,所有运行时间比较长

    JAVA性能瓶颈和漏洞检测

    JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。 主要功能: 识别内存...

    JAVA性能瓶颈和漏洞检测.JProbe.Suite.v7.0.part2

    JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。 主要功能: 识别内存...

    JAVA性能瓶颈和漏洞检测].JProbe.Suite.v7.0.part1

    JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。 主要功能: 识别内存...

    易语言程序免安装版下载

    查找表项()”增加可空参数“列索引”,以指定查找哪一列。 12. 修改扩展界面支持库一,添加“工具条.置标题()”方法。 13. 修改高级表格支持库在表格空白处(所有单元格之外)单击鼠标导致当前光标处单元格自动...

    jprofiler6,带SN

    或者CPU热点,即:哪儿方法占用的较大得CPU资源。我使用的是4.3.2版本,以前试用过3**版本,不过那个bug比较多,容易死,4**版本稳定多了。 有了上面那些信息对于系统的调优会有很大帮助。这里提供有几篇文章供...

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

    Oracle数据库管理员技术指南

    1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration ...

    华为编程开发规范与案例

    在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机...

    测试培训教材

    1、测试流程管理、测试度量方法 按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -...

Global site tag (gtag.js) - Google Analytics