gpt4 book ai didi

java - OutOfMemoryError (GC overhead limit exceeded) 但仍有大量空闲空间

转载 作者:行者123 更新时间:2023-11-28 22:05:38 26 4
gpt4 key购买 nike

在我们的 Tomcat 应用程序中,我们收到“OutOfMemoryError:超出 GC 开销限制”。但是 Runtime.getRuntime().freeMemory() 报告 576 MB 是免费的。

这怎么会发生?

错误是从 SQL Server JDBC 驱动程序中抛出的,我无法想象这会尝试在一个内存请求中分配数百兆字节。并且 GarbageCollectorMXBean 对“PS Scavenge”和“PS ​​MarkSweep”的计数在错误发生前的几分钟内并没有增加太多。

Runtime.getRuntime().maxMemory() 以及 Runtime.getRuntime().totalMemory() 报告 4.5 GB。这是使用 64 位 Sun JVM for Java 7 运行的。

最佳答案

“GC overhead limit exceeded”意味着你的堆没有耗尽,但是花在垃圾收集上的 CPU 时间量已经超过了预定义的限制。基本上,您的 JVM 除了收集垃圾外几乎没有做其他事情。这可能是由多种原因引起的,最典型的是堆几乎耗尽,但每个主要的 GC 都设法挤出足够的内存来满足分配请求。

在您的情况下,可能还有其他原因,例如巨大的堆大小以及太多的主要 GC。您需要使用诊断工具调查您的情况。我强烈推荐 visualgc

关于java - OutOfMemoryError (GC overhead limit exceeded) 但仍有大量空闲空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208783/

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