我完成了我的作业,但我无法找到问题的答案.
我有一个144GB内存的服务器(147456MB)我有java JDK 1.6.0_24-b07我也有tomcat 7.0.10.0
我想尽可能多地分配内存.
我想要像Xmx = 130000M(甚至Xmx = 135000M).我想拥有尽可能多的JVM内存.
我无法跳过111000M它说出了堆空间
JAVA_OPTS="$JAVA_OPTS "-Xms111000M
JAVA_OPTS="$JAVA_OPTS "-Xmx111000M
JAVA_OPTS="$JAVA_OPTS "-XX:PermSize=64M
JAVA_OPTS="$JAVA_OPTS "-XX:MaxPermSize=256M
JAVA_OPTS="$JAVA_OPTS "-d64
JAVA_OPTS="$JAVA_OPTS "-XX:+UseParallelOldGC
Run Code Online (Sandbox Code Playgroud)
我真的必须有Xms = Xmx我尝试了很多选项,我无法跳过.是否可能有"位"额外的内存?
关心鲍勃
首先,Java需要一点内存来管理堆。因此,如果您分配 1GB 堆,它将分配 1.5GB(堆 + permgen + 代码空间 + ....)。因此,当您说 时,您需要检查 Java 实际从操作系统分配了多少内存-Xms111000M -Xmx111000M。请注意,您需要-Xms或 Java 会慢慢分配内存,并且很难测试 OOM 情况。
还要确保单个块中实际上有那么多可用内存。因此,也许其他一些进程需要大量 RAM,或者您的 RAM 被分成两个较小的块(使用 MMU 时不应发生这种情况,因为进程的所有页面总是看起来是连续的,但也许您发现了一个错误)。