【问题标题】:Java Heap Memory Spikes and Cpu spikesJava 堆内存峰值和 Cpu 峰值
【发布时间】:2014-12-01 11:48:26
【问题描述】:

附上我的 Jconsole 的概览展示

如您所见,堆内存使用率飙升,CPU 使用率也非常高。但是,当 Heap Memory Usage 下降(我猜 GC 发生了)时,CPU 并没有一时飙升。

堆内存增加的可能问题是什么,这会导致 CPU 峰值和 CPU 利用率高。

【问题讨论】:

  • 顺便说一句,我在使用其他软件时遇到了这个“性能”问题。因此,我自己没有代码。问题是我如何确定此类问题与代码有关,或者与 GC 甚至我正在使用的一些 JVM 错误有关。

标签: java memory garbage-collection jvm cpu-usage


【解决方案1】:

标准的 while 循环使用大约 50% 的 cpu,因此一次使用多个 while 循环是不明智的。所以我设计来对抗的是一个waitBlock,它使用一个阻塞的inputStream等待特定的时间,直到有一个inputStream,所以如果waitBlock等待0001毫秒,那么循环将每秒运行1000次,所以虽然cpu使用率基本上是 0% 它有速度限制。据我了解,如果您使用的是套接字等内存使用情况,并且您不关闭套接字并且继续重新创建它们,则内存使用量只会不断增加。虽然如果我知道你在代码中做了什么,我可能会提供更多帮助。

【讨论】:

  • while 循环?插座?
  • 谢谢凯尔。我说得对吗,除了查看代码之外,没有办法说出来。顺便说一句,我使用其他软件遇到了这个“性能”问题。因此,我自己没有代码。问题是我如何确定此类问题与代码有关,或者与 GC 甚至我正在使用的一些 JVM 错误有关。
  • 嗯,好像在代码中,一定有一个奇怪的结尾没有被考虑进去。如果您将代码发送给我,我可以为您检查吗?
【解决方案2】:

似乎在执行 Full GC 时,CPU 利用率已正常化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多