gpt4 book ai didi

java - JVM 消耗 100% CPU,大量 GC

转载 作者:行者123 更新时间:2023-12-03 23:13:40 26 4
gpt4 key购买 nike

运行几天后,我的 JVM 的 CPU 负载约为 100%,GC 约为 10%(截图)。

内存消耗接近最大值(约 6 GB)。
在那个状态下,tomcat 非常慢。

JVM CPU usage

最佳答案

由于评论太多,我将其写下来并回答:

查看您的图表,似乎将 CPU 用于非 GC 任务,峰值“GC Activity ”似乎保持在 10% 以内。

因此,在第一印象中,您的任务似乎只是受 CPU 限制,因此如果出乎意料,您可能应该对 Java 应用程序进行一些 CPU 分析,以查看是否会弹出某些内容。

除此之外,根据评论,我怀疑物理内存填满可能会驱逐文件缓存和内存映射的东西,导致页面错误增加,从而迫使 CPU 等待 IO。

在手动 GC 上从 4GB 堆中释放 500MB 似乎并不多,大多数 GC 尝试将暂停时间保持在较低的水平作为其主要目标,将在 GC 中花费的总时间保持在某个范围内作为次要目标,并且仅当另一个目标达到目标,他们尝试减少内存占用作为第三个目标。

在推荐进一步的步骤之前,您应该收集更多统计信息/提供更多信息,因为甚至很难从您的描述中辨别出您的实际问题是什么。

  • 监控页面错误
  • 找出您的设置中使用了哪种 GC 算法以及它们是如何调整的 (-XX:+PrintFlagsFinal)
  • 记录 GC Activity - 我怀疑它非常忙于小 GC,因此耗尽了它的暂停时间或 CPU 负载目标
  • 对您的应用程序进行分配分析(是否会产生过多的垃圾?)

  • 您还必须小心区分由 Java 堆达到其大小限制引起的问题与由操作系统耗尽其物理内存引起的问题。

    TL;DR:问题不明确,需要更多信息。

    或者,如果您很懒惰/负担得起,只需插入更多 RAM/从机器中删除其他服务,看看问题是否消失。

    关于java - JVM 消耗 100% CPU,大量 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003451/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com