`

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

 
阅读更多
问题原因:由于HashMap是非线程安全的,在多线程访问时,造成死循环。

查找问题方法:
1.
top

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

2.
top -p 27377 -H

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

3.
python  hex(27433) 

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

4.
jstack 27377 >cpu.log

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

5.
grep 0x6bz8 cpu.log

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

6.
vim cpu.log

查找nid=0x6b28的内容 如:
"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)
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程的无限循环、阻塞或者资源消耗过大导致的。以下是一套详细的排查步骤来帮助你找出是哪个jar包的哪个线程造成了这个问题。 ...

    70-Java程序CPU占用1001

    在Java编程环境中,当遇到"Java程序CPU占用100%"的问题时,这通常意味着程序中存在性能瓶颈或者死循环,导致CPU资源被过度消耗。为了解决这个问题,我们需要进行一系列的诊断步骤来定位问题所在。以下是详细的排查...

    【原创】java程序cpu占用过高问题分析

    这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...

    Java程序性能优化 让你的Java程序更快、更稳定

    Java程序性能优化是每个开发人员都需要关注的重要领域,它涵盖了多个方面,旨在提高代码执行效率,减少资源消耗,以及提升应用程序的稳定性和响应速度。在本文中,我们将深入探讨Java性能优化的关键点,帮助你的Java...

    java进程占用CPU和内存太高问题排查相关测试文件.zip

    `44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程的状态和它们正在执行的方法,找出哪个线程或方法消耗了大量CPU资源。 2. **内存占用过高**: 内存问题通常与对象创建...

    CPU 高消耗排查

    CPU高消耗是指系统或应用程序在运行过程中占用大量的CPU资源,导致系统响应变慢甚至出现卡顿的现象。这种问题通常会影响系统的整体性能和用户体验。因此,对于运维工程师或者开发人员来说,了解如何排查和解决CPU高...

    Java程序性能优化 让你的Java程序更快、更稳定.zip

    Java程序性能优化是每个开发人员都需要关注的重要领域,特别是在企业级应用中,高效的代码执行能够带来更好的用户体验,减少服务器资源的消耗,降低运营成本。本资料包“Java程序性能优化 让你的Java程序更快、更...

    Java程序性能优化.rar

    在Java编程领域,程序性能优化是一项至关重要的任务,它直接影响到软件的运行效率、资源消耗以及用户体验。"Java程序性能优化"这个主题涵盖了多种技术与策略,旨在提升Java应用程序的运行速度,减少内存占用,以及...

    java进程高CPU占用故障排查.txt

    2. **检查程序代码**:针对高CPU占用的线程,需要仔细审查相关代码逻辑,查找可能存在的问题。例如,是否存在不合理的循环结构、是否有对数据库或外部服务的高频率访问等。 3. **监控JVM参数**:使用工具如`jstat`或...

    3种JAVA程序设计性能优化

    在Java程序设计中,性能优化是一项至关重要的任务,它直接影响到程序的运行效率、资源消耗以及用户体验。本文将深入探讨三种常见的Java程序设计性能优化策略,以帮助开发者提高代码的执行速度和整体性能。 首先,...

    Java堆栈分析服务器

    这样可以更精确地查看哪些线程在消耗CPU资源。在示例中,有四个线程ID(29776、29777、29784和29775)被标记为高CPU占用。由于线程ID在后续的`jstack`命令中需要以十六进制表示,所以需要将这些十进制ID转换为十六...

    java程序性能优化 高清版 不需要50积分,只需要5积分回本

    在Java编程领域,程序性能优化是一项至关重要的任务,它直接影响到软件的运行效率、资源消耗以及用户体验。"Java程序性能优化 高清版"可能是针对Java开发者的一份详细指南,旨在帮助他们提升代码质量,减少资源浪费...

    CPU热点定位

    CPU热点定位是解决这类问题的关键技术之一,它可以帮助开发者快速找到程序中消耗CPU资源最多的部分,从而进行优化。本文将通过一个具体的案例来探讨如何使用`jstack`和`top`工具进行CPU热点定位。 #### 二、基本...

    jprofiler java内存监控

    3. **CPU性能分析**:JProfiler可以监控Java方法的CPU使用率,通过火焰图等直观展示,定位到CPU消耗大的代码段,优化性能。 4. **实时监控**:JProfiler支持实时监控Java应用程序,用户可以设置阈值,当达到特定...

    java JDK 实例开发宝典

    6. **Java性能分析工具(jconsole、jvisualvm等)**:用于监控和分析Java应用的性能,包括内存使用、线程状态、CPU消耗等。 7. **其他工具**:如appletviewer用于运行Applet,native2ascii用于处理本地化文本,...

    Java-jdk-1.7.0_80

    6. **Java性能分析器(jvisualvm)**:提供了一个图形界面来监视和分析Java应用程序的性能,包括内存使用、线程活动和CPU消耗。 7. **Java运行时环境(JRE)**:虽然不直接包含在JDK中,但它是运行Java应用程序所...

    JAVA-jdk手册

    7. **Java可视化工具集(JConsole、VisualVM等)**:这些工具提供了一种图形化的方式来监控和分析Java应用程序的性能,包括内存使用、线程状态、CPU消耗等。 8. **Java Mission Control(JMC)**:这是一个高级的...

Global site tag (gtag.js) - Google Analytics