Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行tomcat的redhat机器上的有效Xmx值是多少_Java_Tomcat_Memory_Heap_Redhat - Fatal编程技术网

Java 运行tomcat的redhat机器上的有效Xmx值是多少

Java 运行tomcat的redhat机器上的有效Xmx值是多少,java,tomcat,memory,heap,redhat,Java,Tomcat,Memory,Heap,Redhat,我在RHEL7机器上运行tomcat,内存为1GB。我已经将tomcat和java都设置为Xmx=1G,并且下面的语句都支持这一点 [root@ip-172-31-28-199 bin]#java-XX:+PrintFlagsFinal-version | grep HeapSize拾取的JAVA选项:-Xmx1g uintx ErgoHeapSizeLimit=0{product} uintx HeapSizePerGCThread=87241520{product} uintx Initia

我在RHEL7机器上运行tomcat,内存为1GB。我已经将tomcat和java都设置为Xmx=1G,并且下面的语句都支持这一点

[root@ip-172-31-28-199 bin]#java-XX:+PrintFlagsFinal-version | grep HeapSize拾取的JAVA选项:-Xmx1g uintx ErgoHeapSizeLimit=0{product} uintx HeapSizePerGCThread=87241520{product} uintx InitialHeapSize:=16777216{product} uintx LargePageHeapSizeThreshold=134217728{product} uintx MaxHeapSize:=1073741824{product}openjdk版本“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.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

但当我得到异常时,我得到以下消息

内存不足,Java运行时环境无法继续。 本机内存分配(mmap)映射244043776字节以提交保留内存失败。
我知道java永远不会要求1GB内存,因为这是机器的总内存。但是为什么我在提到这个大小时会出错呢?

尝试添加
-Xms1g
,这样它最初会分配所有内存,您会发现它甚至无法启动Tomcat

如果您想将尽可能多的内存压缩到Tomcat中(不推荐),请慢慢减少这两个数字(对于
mx
ms
),直到Tomcat启动

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


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

有一篇有趣的帖子建议禁用OOPS。 您运行的是物理服务器还是虚拟机


我同意1G服务器的大小不足,您应该运行Xmx=512M并允许一些交换(vm.swappiness=60是默认值,对于小型Tomcat来说应该可以)

这是一个逻辑问题。如果您的服务器只有1GB内存,为什么您认为应该为Tomcat保留1GB内存?操作系统和其他软件也需要使用系统内存!你最好增加你的服务器内存。