当前位置: 首页 > 面试题库 >

Java应用程序中的高CPU使用率-为什么?

裴心水
2023-03-14
问题内容

我有一个Java应用程序(基于Web),有时显示几个小时的CPU使用率很高(几乎90%)。Linux
TOP命令显示了这一点。重新启动应用程序后,问题消失了。

因此要调查

我使用线程转储来查找线程在做什么。发现多个线程处于'RUNNABLE'状态,一些处于其他状态。在进行重复的线程转储时,我确实看到了一些始终处于'RUNNABLE'状态的线程。因此,他们似乎是罪魁祸首。

但是我无法确定是哪个线程正在占用CPU或进入了无限循环(从而导致较高的CPU使用率)。

日志不一定有帮助,因为有问题的代码可能未记录任何内容。

我该如何调查-应用程序或线程的哪个部分导致CPU使用率高? -还有其他想法吗?


问题答案:

如果探查并不适用于您的设置,您可以尝试找出以下步骤线程这个职位。

基本上,分三个步骤:

  1. 运行top -H并获取具有最高CPU的线程的PID。
  2. 将PID转换为十六进制。
  3. 在您的线程转储中查找具有匹配的十六进制PID的线程。


 类似资料:
  • 我有一个Java应用程序(基于web),它有时会在几个小时内显示非常高的CPU利用率(几乎90%)。Linux的TOP命令显示了这一点。重新启动应用程序时,问题就会消失。 所以要调查: 我使用线程转储来查找线程正在执行的操作。有几个线程处于“可运行”状态,一些线程处于其他一些状态。在重复执行线程转储时,我确实看到一些线程总是处于“可运行”状态。因此,他们似乎是罪魁祸首。 但我无法确定,哪个线程占用

  • 我有一个基于java的应用程序要在ubuntu上运行,为了从服务器开始并保持它的活力,我编写了一个upstart脚本。 问题是启动了upstart服务,它消耗了100%的cpu,这个应用程序有很多线程,只有一个线程很高。 请注意,从命令行启动java应用程序不会出现此问题。 非常感谢。

  • 我对wowza中的cpu使用有问题。 这是可疑的线程。这个线程被占用了高CPU。 这个线程占用了大量cpu。这是jdk bug还是其他? 这是我的环境。 CentOS 5.4版(最终版) WowzaMediaServer-3.1.2 java版本1.6.0_23 java(TM)SE Runtime Environment(构建1.6.0_23-b05)java HotSpot(TM)64位服务器

  • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 最近,我的服务器CPU性能一直很高。 CPU平均负载为13.91(1分钟)11.72(5分钟)8.01(15分钟),而我的站点的流量仅略有增加。 运行完最高命令后,我看到MySQL使用的CPU是160%! 最近,我一直在优化表,并切换到持久连接。这会

  • 问题内容: 说“用cpu = 800和内存= 1024运行myApp.jar” 我从事Java编程已经很多年了,问这个问题很尴尬。我什至不知道这是否可能。如果是这样,怎么办? 我只想知道是否可以设置Java程序的最大内存和cpu使用率。我突然想到了这个,因为我最近开始开发移动应用程序。我想知道该应用程序在内存和处理器非常有限的设备上的表现。 我看到带有演示应用程序的物理引擎可以在浏览器上运行,也可

  • 揭示了这一点 但我读到的所有内容都表明,处于“等待”状态的线程不应该占用CPU资源。为什么我会看到这个奇怪的结果?我是不是一路上搞砸了什么?