- 浏览: 139529 次
- 性别:
- 来自: 北京
文章分类
问题原因:由于HashMap是非线程安全的,在多线程访问时,造成死循环。
查找问题方法:
1.
找出最耗费cpu的进程号 如:27377
2.
找出此进程下的所有线程,然后找出最耗cpu线程号 如:27433
3.
将十进制数转为16进制 如:0x6b29
4.
将此进程号的Java堆栈信息打印到文件中
5.
查看java堆栈中的线程nid 如:
"foundationTaskExecutor-2" prio=10 tid=0x00007f064c041000 nid=0x6b28 runnable [0x00007f069f5da000]
6.
查找nid=0x6b28的内容 如:
查找问题方法:
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)
发表评论
文章已被作者锁定,不允许评论。
-
storm 安装
2013-09-02 16:32 3067------------------------------- ... -
动态代理性能比较
2013-01-18 17:02 1155转自http://javatar.iteye.com/blog ... -
java 类加载器学习
2012-12-14 10:47 1033引用1.自定义类加载器 public interface ... -
jackson 学习
2012-11-13 15:42 10021.json 转为object对象 public clas ... -
java 线程池 异常 处理 机制 分析
2012-10-31 19:34 2131public class ThreadTest { ... -
ThreadPoolExecutor 原理-- java 线程池
2012-08-08 19:14 1143整个ThreadPoolExecutor的任务处理有4 ... -
java 缓冲
2012-08-08 19:12 1063import org.apache.log4j.Logge ... -
java io
2012-04-24 11:06 9161、按字节读取文件内容 2、按字符读取文件内容 3、按行读取 ... -
java 内省
2011-11-20 22:58 835java内省 -
系统常用工具类
2011-04-20 17:46 10331.ArithUtil.java ... -
spring 面向切面编程
2010-12-27 17:03 1089@Aspect public class AspectCoup ... -
jxl 写入excel
2010-11-10 13:52 10131.程序调用 ReportInterface report ... -
java 读取excel
2010-11-10 09:04 954package com.longtuo.client.act ... -
java 生成略缩图
2010-10-20 17:21 1202import java.awt.Graphics2D; imp ... -
XStream简单介绍
2010-09-10 15:44 1684创建能够序列化的类 这是一组简单的类。XStream能把这 ... -
java中对集合类的排序
2010-05-04 13:47 9021.第一种 public class User impleme ... -
Java 获取操作系统信息与Desktop类
2009-11-17 16:24 1365import java.util.Properties; ... -
java 事物处理
2009-10-15 10:52 1432public boolean deleteSchedule ... -
ajax验证用户名是否存在
2009-09-10 10:08 1862<script> var xmlHtt ...
相关推荐
在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程的无限循环、阻塞或者资源消耗过大导致的。以下是一套详细的排查步骤来帮助你找出是哪个jar包的哪个线程造成了这个问题。 ...
在Java编程环境中,当遇到"Java程序CPU占用100%"的问题时,这通常意味着程序中存在性能瓶颈或者死循环,导致CPU资源被过度消耗。为了解决这个问题,我们需要进行一系列的诊断步骤来定位问题所在。以下是详细的排查...
这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...
Java程序性能优化是每个开发人员都需要关注的重要领域,它涵盖了多个方面,旨在提高代码执行效率,减少资源消耗,以及提升应用程序的稳定性和响应速度。在本文中,我们将深入探讨Java性能优化的关键点,帮助你的Java...
`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程的状态和它们正在执行的方法,找出哪个线程或方法消耗了大量CPU资源。 2. **内存占用过高**: 内存问题通常与对象创建...
CPU高消耗是指系统或应用程序在运行过程中占用大量的CPU资源,导致系统响应变慢甚至出现卡顿的现象。这种问题通常会影响系统的整体性能和用户体验。因此,对于运维工程师或者开发人员来说,了解如何排查和解决CPU高...
Java程序性能优化是每个开发人员都需要关注的重要领域,特别是在企业级应用中,高效的代码执行能够带来更好的用户体验,减少服务器资源的消耗,降低运营成本。本资料包“Java程序性能优化 让你的Java程序更快、更...
在Java编程领域,程序性能优化是一项至关重要的任务,它直接影响到软件的运行效率、资源消耗以及用户体验。"Java程序性能优化"这个主题涵盖了多种技术与策略,旨在提升Java应用程序的运行速度,减少内存占用,以及...
2. **检查程序代码**:针对高CPU占用的线程,需要仔细审查相关代码逻辑,查找可能存在的问题。例如,是否存在不合理的循环结构、是否有对数据库或外部服务的高频率访问等。 3. **监控JVM参数**:使用工具如`jstat`或...
在Java程序设计中,性能优化是一项至关重要的任务,它直接影响到程序的运行效率、资源消耗以及用户体验。本文将深入探讨三种常见的Java程序设计性能优化策略,以帮助开发者提高代码的执行速度和整体性能。 首先,...
这样可以更精确地查看哪些线程在消耗CPU资源。在示例中,有四个线程ID(29776、29777、29784和29775)被标记为高CPU占用。由于线程ID在后续的`jstack`命令中需要以十六进制表示,所以需要将这些十进制ID转换为十六...
在Java编程领域,程序性能优化是一项至关重要的任务,它直接影响到软件的运行效率、资源消耗以及用户体验。"Java程序性能优化 高清版"可能是针对Java开发者的一份详细指南,旨在帮助他们提升代码质量,减少资源浪费...
CPU热点定位是解决这类问题的关键技术之一,它可以帮助开发者快速找到程序中消耗CPU资源最多的部分,从而进行优化。本文将通过一个具体的案例来探讨如何使用`jstack`和`top`工具进行CPU热点定位。 #### 二、基本...
3. **CPU性能分析**:JProfiler可以监控Java方法的CPU使用率,通过火焰图等直观展示,定位到CPU消耗大的代码段,优化性能。 4. **实时监控**:JProfiler支持实时监控Java应用程序,用户可以设置阈值,当达到特定...
6. **Java性能分析工具(jconsole、jvisualvm等)**:用于监控和分析Java应用的性能,包括内存使用、线程状态、CPU消耗等。 7. **其他工具**:如appletviewer用于运行Applet,native2ascii用于处理本地化文本,...
6. **Java性能分析器(jvisualvm)**:提供了一个图形界面来监视和分析Java应用程序的性能,包括内存使用、线程活动和CPU消耗。 7. **Java运行时环境(JRE)**:虽然不直接包含在JDK中,但它是运行Java应用程序所...
7. **Java可视化工具集(JConsole、VisualVM等)**:这些工具提供了一种图形化的方式来监控和分析Java应用程序的性能,包括内存使用、线程状态、CPU消耗等。 8. **Java Mission Control(JMC)**:这是一个高级的...