`
ldd600
  • 浏览: 103765 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11267
社区版块
存档分类
最新评论

Java进程CPU100%的问题

阅读更多

今天review了一下测试环境,后来发现一个java进程CPU 120%多,4核的CPU,很多人都没感觉。但是确实是很大问题。测试环境没什么并发,也没什么数据量怎么会这么高的cpu呢?

 

找到java进程中耗cpu最高的nid,

top –p pid –H

 

用jstack或者其他方式打印一下线程堆栈,从堆栈记录里找出nid,对应的线程和他的堆栈。找到出问题的方法。有这么一段代码。

while (true) {
            while (blockingDeque.size() > 0) {
                try {
                    final String message = String.valueOf(blockingDeque.poll());
}
}

 

 

本来blockingqueue的目的是空的时候,让线程堵住。让出CPU资源。现在他完全没用到,改成了让CPU空转,使得CPU 100%。另外需要将poll改成take或者加上timeout。代码还是要经常去review。

0
0
分享到:
评论
1 楼 406657836 2013-05-26  
java 在server模式下对while进行了优化。把判断提前了。在client模式下看不出,所以开发的时候也最好是server模式。
不过这个优化有点坑,因为size()方法本身是采用了同步的,只是没有用synchronize。

相关推荐

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

    一旦找到CPU占用高的Java进程,你可以使用`jstack`工具来获取该进程的线程堆栈信息。`jstack`会输出一个包含所有线程状态的文本文件,其中第一行显示的是dump的时间,紧接着是虚拟机信息,然后列出所有线程的状态。...

    线上服务CPU100%问题快速定位实战

    ### 线上服务CPU100%问题快速定位实战 #### 一、引言 在IT运维领域,性能问题是常见的挑战之一,特别是在线上服务出现CPU利用率飙升至100%的情况下,快速准确地定位问题变得尤为重要。本文将详细介绍一种实战演练...

    Java进程cpu占用率高

    在Java编程环境中,当遇到“Java进程CPU占用率高”的问题时,这通常意味着Java应用程序在执行过程中消耗了大量计算资源,可能导致系统响应变慢,甚至出现性能瓶颈。本篇文章将深入探讨这个问题,并提供相关解决方案...

    CPU资源占用100%解决方法

    在日常使用电脑的过程中,我们可能会遇到CPU资源占用100%的情况,这通常会导致系统运行缓慢,甚至出现卡顿、冻结等问题。CPU是计算机的核心组件,负责执行指令和处理数据,当其占用率达到100%,意味着CPU正在全力...

    java获取各进程的信息

    在Java开发过程中,有时候我们需要监控系统资源或特定进程的状态,例如CPU使用率、内存占用情况等。这在服务器性能监控、问题排查等方面尤为重要。本文将详细介绍如何使用Sigar库来实现这些功能。 #### Sigar简介 ...

    java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码

    "java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码" 在Windows操作系统中,内存管理是一个非常重要的方面。Windows实现按需调页的虚拟内存机制,使得应用程序可以使用超过...

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

    当Java进程CPU占用率过高时,可能的原因包括无限循环、线程阻塞、计算密集型任务或垃圾回收问题等。`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程的状态和它们正在执行...

    cpu进程调度 java编写

    本文将深入探讨“CPU进程调度”这一重要概念,并基于Java语言的实现进行详细阐述。在这个课程设计中,我们将看到如何利用Java来模拟操作系统的进程调度算法。 首先,让我们理解CPU进程调度的基本概念。在多任务环境...

    Java进程cpu占用过高问题解决

    Java进程cpu占用过高问题解决 Java进程cpu占用过高问题解决是指Java进程中cpu占用率过高的问题,导致了系统性能下降和服务器崩溃。解决这个问题需要了解Java进程的cpu占用率的原因,并采取相应的措施来解决。 cpu...

    linux下查看java进程下线程占用cpu情况

    通过以上方法,你可以深入了解Linux下Java进程及线程对CPU的占用情况,从而进行问题定位和性能优化。在实际操作中,通常会结合多个工具和方法,以便从不同角度全面分析。记得,持续监控和分析是找出问题的关键。

    70-Java程序CPU占用1001

    通过输入`top`命令,我们可以看到各个进程的CPU和内存使用率,从中找出CPU占用率最高的Java进程。记下该进程的PID(进程ID)。 2. **获取问题线程的TID** 接下来,我们需要找出这个进程中的具体哪个线程导致了CPU...

    Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法.pdf

    Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU、内存、硬盘、进程等。下面将介绍两种获取系统信息的方法。 方法一:使用 Java ...

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

    从给定的部分内容中可以看到,`top`命令显示PID为2633的Java进程CPU占用率为300%。这表明该进程内部存在严重的问题,导致了CPU资源的过度消耗。 2. **使用ps命令获取线程详情**: ```shell [root@localhost logs]...

    使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因解析

    公司的产品一直紧跟 .net core 3.0 preview 不断升级, 部署到 Linux 服务器后, 偶尔会出现某个进程CPU占用100%.  由于服务部署在云上, 不能使用远程调试; 在局域网内的Linux 服务器 或 Windows开发机上又不能重现这...

    java 进程调度算法模拟

    Java进程调度算法模拟是计算机科学中的一个重要概念,特别是在多任务操作系统和并发编程中。这个话题源于操作系统原理,但在Java环境中,我们可以通过编程实现对进程调度的模拟,以便理解和掌握不同的调度策略。在这...

    用java获取cpu占用

    在Java编程环境中,获取CPU占用率是常见的系统监控任务,这对于性能分析、故障排查或资源管理至关重要。要实现这一功能,通常需要利用Java提供的操作系统接口,例如Java Management Extensions (JMX) 或者 sun.misc...

    pcb.rar_cpu scheduling_java 进程调度_pcb java

    总结来说,这个"pcb.rar"压缩包中的内容是关于操作系统CPU调度的一个学习资源,通过Java编程实现了进程控制块(PCB)和CPU调度算法。对于学习操作系统原理和Java编程的学生,或者对系统级编程感兴趣的开发者来说,这...

    操作系统进程调度(java)

    在这个Java项目中,`ProcessorDispatch.java`可能是实现调度算法的主程序,它可能包含一个模拟的CPU和一系列待处理的任务(进程)。用户可能通过命令行输入或者预设的输入数据,来创建和提交进程到系统中。然后,...

    java进程调度算法

    在计算机科学中,进程调度是操作系统中的核心功能之一,它负责管理系统的运行进程,决定哪个进程应该在何时获得CPU执行权。在这个Java编程项目中,我们聚焦于通过Applet实现不同的进程调度算法,这是一种在Web浏览器...

Global site tag (gtag.js) - Google Analytics