java - JVM堆和Tomcat堆的关系

标签 java tomcat jvm heap-memory

假设在我的机器 [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/

相关文章:

tomcat - validationQuery(选择 1)在未指定的情况下全天候运行 24/7?

java - 为什么Java虚拟机中没有GIL?为什么 Python 这么需要一个?

java - Java 中的急切垃圾收集

java - 将绘图区域添加到空布局 GUI

Java 2D 数组越界

java - inotify - 我应该如何处理完整的事件队列?

java - Spring 单元测试和 InitialContext

java - 来自另一个 servlet 的 request.getContext?

java - 为什么对于较大的数字,平方根计算速度较慢?

java - JVM在使用synchronized时如何保证被引用对象中成员变量修改的可见性?