假设在我的机器 [x64、linux、8g Ram] 上,我将堆设置为 JAVA_OPTS=-Xmx2048m
,将 tomcat 设置为 CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
.
现在,tomcat 中应用程序的内存需求随时都会超出 CATALINA_OPTS
中指定的堆大小。
会出现内存不足的错误吗?或者它会正常工作,因为有足够的内存分配给 JVM(通过 JAVA_OPTS
)?
最佳答案
当您在 tomcat 中运行应用程序时,它将使用 tomcat 的 CATALINA_OPTS 中指定的堆内存。
您可以在同一台计算机上运行多个 JVM,在这种情况下,tomcat 有单独的 JVM,并且它是一个不同的 Java 进程。
此外,要检查应用程序的内存使用情况,您可以使用 JDK 附带的任何分析器工具。 visualvm 就是这样一个工具。 .
编辑:-正如OP询问如果分配给应用程序的内存耗尽会发生什么,那么在这种情况下outofmemory error来了。
使用上述分析器工具,您可以调试导致此错误的原因以及应用程序中消耗大部分内存的位置。
关于java - JVM堆和Tomcat堆的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46462731/