假设在我的机器上[x64,linux,8g Ram],我将堆设置为JAVA_OPTS=-Xmx2048m
,将tomcat设置为CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
。
现在,在任何时候,tomcat中应用程序的内存需求超出了CATALINA_OPTS
指定的堆大小。
是否会出现Out of Memory错误?或者它可以正常工作,因为JVM有足够的内存(JAVA_OPTS
)?
答案 0 :(得分:1)
当您在tomcat中运行应用程序时,它将使用 CATALINA_OPTS 中指定的堆内存作为tomcat。
您可以在同一台机器上运行多个JVM,在这种情况下,tomcat有单独的JVM,它是一个不同的Java进程。
此外,要检查应用程序的内存使用情况,可以使用JDK附带的任何分析器工具。一个这样的工具是visualvm。
编辑: - 由于OP询问如果分配给应用程序的内存耗尽会发生什么,那么outofmemory error就会出现。
使用上面提到的探查器工具,您可以调试导致此错误的原因以及应用中消耗大部分内存的位置。