java - 我运行 tomcat 的 redhat 机器上的有效 Xmx 值是多少

标签 java tomcat memory redhat heap-memory

我在具有 1GB 内存的 RHEL 7 机器上运行 tomcat。我已将 tomcat 和 java 都设置为 Xmx=1G 并且下面的语句支持它,

[root@ip-172-31-28-199 bin]# java -XX:+PrintFlagsFinal -version | grep HeapSize Picked up _JAVA_OPTIONS: -Xmx1g uintx ErgoHeapSizeLimit = 0 {product} uintx HeapSizePerGCThread = 87241520 {product} uintx InitialHeapSize := 16777216 {product} uintx LargePageHeapSizeThreshold = 134217728 {product} uintx MaxHeapSize := 1073741824 {product} openjdk version "1.8.0_161"

tomcat 2799 1 1 02:21 ? 00:00:07 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Xmx1024M -Dignore.endorsed.dirs= -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

但是当我遇到异常时,我会收到以下消息,

There is insufficient memory for the Java Runtime Environment to continue.

Native memory allocation (mmap) failed to map 244043776 bytes for committing reserved memory.

我知道 java 永远不能要求 1GB 内存,因为那是机器的总内存。但是为什么我在提到这个尺寸时会出错?

最佳答案

也尝试添加-Xms1g,这样一开始它就分配了所有内存,你会发现它甚至无法启动Tomcat。

如果你想将尽可能多的内存压入 Tomcat 中(不推荐),请慢慢减少这两个数字(mxms 的值相同code>) 直到 Tomcat 启动。

这是您可以为 Tomcat 提供的绝对最大值,但您不应该这样做。 Java 在运行时可能仍需要更多,而操作系统偶尔会需要更多,因此您应该为 Tomcat 提供少于绝对最大值的值。

现在您已经找到了数字,如果您愿意,可以再次将 -Xms 保留为未定义。

关于java - 我运行 tomcat 的 redhat 机器上的有效 Xmx 值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49355039/

相关文章:

C函数内存分配

python - Windows下查看Python程序最大内存使用

java - 奇怪的 Java 套接字行为(连接,但不发送)

java - & 在插入语句中的含义

java - ClassNotFoundException - 监听器网络应用程序

tomcat - 同一台服务器上的多个 tomcat ...ajp 停止工作

java - Apache POI 读取 Excel 数据并将其放入 HashSet 中

java - 通过 Apache POI 读取大型 Excel 文件 (xlsx) 时出错

java - 在日志记录中的 Eclipse 上运行的 Tomcat 服务器中的死锁

Java 人体工程学 : how are defaults calculated?