Java JVM堆和Tomcat堆关系

Java JVM堆和Tomcat堆关系,java,tomcat,jvm,heap-memory,Java,Tomcat,Jvm,Heap Memory,假设在我的机器[x64,linux,8g Ram]上,我将heap设置为JAVA_OPTS=-Xmx2048m,将tomcat设置为CATALINA_OPTS=“$CATALINA_OPTS-Xmx1024m” 现在,tomcat中应用程序的内存需求随时都会超出在CATALINA\u OPTS中指定的堆大小 它是否会出现内存不足错误?或者它可以正常工作,因为JVM有足够的内存(通过JAVA\u OPTS) 当您在tomcat中运行应用程序时,它将使用在tomcat的CATALINA_OPTS中指

假设在我的机器[x64,linux,8g Ram]上,我将heap设置为
JAVA_OPTS=-Xmx2048m
,将tomcat设置为
CATALINA_OPTS=“$CATALINA_OPTS-Xmx1024m”

现在,tomcat中应用程序的内存需求随时都会超出在
CATALINA\u OPTS
中指定的堆大小


它是否会出现内存不足错误?或者它可以正常工作,因为JVM有足够的内存(通过
JAVA\u OPTS

当您在tomcat中运行应用程序时,它将使用在tomcat的CATALINA_OPTS中指定的堆内存

您可以在同一台机器上运行多个JVM,在这种情况下,tomcat有单独的JVM,这是一个不同的Java进程。

此外,要检查应用程序的内存使用情况,您可以使用JDK附带的任何探查器工具。一个这样的工具是

编辑:-OP询问如果分配给应用程序的内存耗尽会发生什么情况,然后出现这种情况


使用上面提到的探查器工具,您可以调试导致此错误的原因以及应用程序中大部分内存的消耗位置

谢谢@Amit Khandelwal,但我的问题是,如果tomcat中的应用程序所需的内存超过了提供给tomcat的限制,将会发生什么?如果JMV heap有足够的内存。@d.Mon,那么您将出现内存不足错误@d.Mon,如果我的答案解决了您的问题,那么您可以接受我的答案,请阅读如何接受解决方案。