`

如何调试JAVA进程CPU过高

    博客分类:
  • JAVA
阅读更多

       在日常开发中,会碰到java版本的CPU很高,大部分时候会耗尽CPU资源,作者就碰到好几次,这里贴一下我的问题发现的过程。

        作者第一次碰到是在linux系统下,代码进行过重构以后,每次运行,JAVA总是会耗尽CPU。linux系统为64位版本centos系统。

       解决方法:

       1、找到具体是哪个JAVA进程耗费的CPU资源,然后再定位到是进程中的哪些线程耗费CPU

           这个可以使用linux下的命令 top,按照CPU资源进行排序,找到对应的进程PID。

           

 

          使用JAVA jps命令找到该ID对应的java进程,知道是哪个JAVA进程耗费的CPU。

           

 

        2、打印该JAVA进程的线程队列

         使用jstack命令打印当前进程的线程堆栈调用信息



        3、使用它top带 H 命令按照线程占用CPU情况进行展示,记录CPU很高的线程PID

        根据步骤2打印的jstack线程堆栈的调用信息,如下图:

     

 将记录的高CPU的线程ID与线程堆栈信息的nid进程比较,找到具体是哪个线程耗费的CPU,并最终定位到具体是哪块代码耗费的CPU,jstack命令产生线程堆栈信息的nid为16进制

 

windows环境下则较为复杂,是因为windows环境下没有类top命令,需要软件进程支持,读者可以下载windows自己的process explorer软件来查看具体是哪个线程耗费CPU。

如下图所示:



 左边是进程列表,双击以后就可以对查看该进程的详细信息如下图:



 剩下的步骤跟linux下相同

 

 

  • 大小: 102.8 KB
  • 大小: 9.9 KB
  • 大小: 7.9 KB
  • 大小: 129.6 KB
  • 大小: 176.2 KB
  • 大小: 86.5 KB
分享到:
评论

相关推荐

    Java进程cpu占用率高

    综上所述,解决“Java进程CPU占用率高”问题需要从多个角度出发,包括但不限于代码优化、JVM调优、垃圾收集策略调整、监控与诊断工具的使用等。通过系统性地分析和改进,可以有效地降低Java进程对CPU的占用,提高...

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

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

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

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

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

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

    java获取各进程的信息

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

    cpu进程调度 java编写

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

    Linux中java占用CPU过高排查.doc

    Linux系统中java进程占用cpu资源过高,分析(自用,需要私聊)

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

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

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

    在Linux系统中,监控Java进程及其线程的CPU使用情况是进行性能调优的重要环节。以下是一些关于如何实现这一目标的关键知识点。 1. **`ps` 命令**: - `ps` 是一个用于报告当前系统中进程状态的命令。基本用法如 `...

    70-Java程序CPU占用1001

    通过对以上步骤的分析,我们通常能够定位到导致CPU占用过高的原因,并采取相应的优化措施,如调整并发控制、优化算法、减少不必要的计算或I/O操作等。在实际应用中,还可以结合Java Profiler工具(如VisualVM、...

    java 进程调度算法模拟

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

    Java进程CPU使用率高排查

     3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。  4.echo “obase=16; PID” | bc 将线程的PID转换为16进制。  5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。  6.分析...

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

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

    CPU占用高

    CPU过热或硬件故障也可能导致CPU占用高。检查散热设备是否正常工作,确认CPU风扇是否清洁,必要时更换散热膏或修理硬件。 7. **工具使用**: 有一些工具如Process Explorer(微软出品)或VisualVM(Java应用性能...

    一次因Java应用造成CPU过高的排查实践过程

    在Java应用开发中,CPU过高通常是一个棘手的问题,它可能导致服务器性能急剧下降,甚至影响整个系统的稳定性。本文将深入探讨一次由于Java应用导致CPU占用过高的排查实践过程。 首先,当发现应用CPU使用率异常时,...

    linux服务器找到占用cpu高的java代码的办法

    在Linux服务器环境中,Java应用程序可能由于各种原因导致CPU使用率过高,这可能会影响系统的整体性能。要找到占用CPU高的Java代码,我们可以采取一系列步骤来诊断和优化问题。以下是一种详细的方法: 1. **查看系统...

    java进程调度算法

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

    JAVA操作系统实验进程调度图形化模拟程序

    FCFS算法易于实现,但在处理短进程时可能会导致长进程等待时间过长,从而降低系统的平均周转时间。 2. 短进程优先(Shortest Job First, SJF)算法:SJF算法优先选择预计运行时间最短的进程执行,以最小化平均等待...

    java应用cpu占用过高问题分析及解决方法

    Java 应用 CPU 占用过高问题分析及解决方法 Java 应用程序的 CPU 占用率过高是一...通过遵循良好的编程实践、优化资源密集型操作、调整 JVM 配置、修复内存泄露等方法,可以解决 Java 应用程序 CPU 占用率过高的问题。

Global site tag (gtag.js) - Google Analytics