Tomcat OOM 错误,即使堆使用量远低于限制
Tomcat OOM Error even when heap-used is well under the limit
当 Xmx 值也太高时,是否有可能在 Apache Tomcat 中出现 "Out of Memory" 错误?
我为什么要问这个?
我们已将 Java 堆 (Xmx) 设置为 8GB。
设置 CATALINA_OPTS= -Xmx8192m
没有指定Metaspace(所以根据需要取用,不会因为Metaspace而出错)。
不过,Tomcat 会在一段时间后生成 OOM 错误并停止响应用户请求。
当我们检查 JVisualVM 的 Tomcat 进程时,堆和元空间图显示在限制之下。
堆接近 1.5GB(超过 8GB),元空间接近 200MB。
我发现这个 link 提到当堆太高时出现 OOM 错误。
https://confluence.atlassian.com/confkb/confluence-crashes-due-to-outofmemoryerror-gc-overhead-limit-exceeded-error-189433058.html。
我找不到足够的资源来加强它。
能否分享一下您的想法?
正如其他评论者所说,要获得更好的答案,请提供堆栈跟踪和其他信息。
OutOfMemory 错误的另一种典型情况是当您尝试一次性分配比可用内存更多的内存时,例如分配巨大的大型数组时。异常消息将只是 'java.lang.OutOfMemoryError: Java heap space',抛出在您分配数组的位置。
当 Xmx 值也太高时,是否有可能在 Apache Tomcat 中出现 "Out of Memory" 错误?
我为什么要问这个?
我们已将 Java 堆 (Xmx) 设置为 8GB。 设置 CATALINA_OPTS= -Xmx8192m 没有指定Metaspace(所以根据需要取用,不会因为Metaspace而出错)。
不过,Tomcat 会在一段时间后生成 OOM 错误并停止响应用户请求。
当我们检查 JVisualVM 的 Tomcat 进程时,堆和元空间图显示在限制之下。 堆接近 1.5GB(超过 8GB),元空间接近 200MB。
我发现这个 link 提到当堆太高时出现 OOM 错误。 https://confluence.atlassian.com/confkb/confluence-crashes-due-to-outofmemoryerror-gc-overhead-limit-exceeded-error-189433058.html。 我找不到足够的资源来加强它。
能否分享一下您的想法?
正如其他评论者所说,要获得更好的答案,请提供堆栈跟踪和其他信息。
OutOfMemory 错误的另一种典型情况是当您尝试一次性分配比可用内存更多的内存时,例如分配巨大的大型数组时。异常消息将只是 'java.lang.OutOfMemoryError: Java heap space',抛出在您分配数组的位置。