【发布时间】:2019-02-20 07:34:11
【问题描述】:
内存不足时,运行 Tomcat 8 的 Java 8 在堆转储后永远不会停止。相反,它只是挂起,因为它最大内存。由于广泛的 GC,服务器变得非常缓慢且无响应,因为它慢慢接近最大内存。达到最大值后,JConsole 中的内存图呈扁平线。 64位linux/java版本“1.8.0_102”/Tomcat 8.Jconsole
我设置了 -XX:HeapDumpOnOutOfMemoryError 和 -XX:HeapDumpPath。任何人都知道如何强制堆转储而不是 JVM 进入无响应/非常慢的响应模式?
【问题讨论】:
-
你真的看到OOM了吗?
-
我没有看到 OOM。 JVM 的响应速度越来越慢,最终没有响应。
-
-XX:HeapDumpOnOutOfMemoryError似乎不对,您是否尝试过 `-XX:+HeapDumpOnOutOfMemoryError' (列后带有 '+' )?此 JVM 选项是一个开关,因此您可以分别使用“+”或“-”启用/禁用它。 -
对不起,我正在使用 XX:+HeapDumpOnOutOfMemoryError。
-
也许尝试使用 jmap 在内存不足之前创建堆转储? docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/…