根据 JVM 的文档,如果您使用太大的 Xms 参数,JVM 将无法启动。所以,我问,如果我不使用它会发生什么?我的虚拟机可以无限增长吗?它只会在物理内存耗尽时停止吗?
user689842
问问题
5153 次
2 回答
8
XMX 是最大堆大小。
如果我不使用它会怎样?
如果省略,则使用默认值。默认值因 JVM 版本和运行的平台而异。第 5 版的详细信息在此处。
默认情况下,在服务器级机器上选择以下选项。
...
最大堆大小为 ¼ 物理内存,最大 1Gbyte
于 2012-07-09T14:12:43.063 回答
4
如果您不指定-Xmx
,那么您将获得操作系统、jvm、选项和版本的默认分配。
考虑到可能影响价值的事物的数量以及导航文档所需的时间,询问您的 jvm 可能会更容易。
例如在我的 Linux 系统上:
$ java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
uintx AdaptivePermSizeWeight = 20 {product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx InitialHeapSize := 66328448 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 1063256064 {product}
uintx MaxPermSize = 67108864 {pd product}
uintx PermSize = 16777216 {pd product}
java version "1.6.0_24"
因为它默认为-server
,但-client
我得到:
$ java -client -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
uintx AdaptivePermSizeWeight = 20 {product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx InitialHeapSize := 16777216 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 268435456 {product}
uintx MaxPermSize = 67108864 {pd product}
uintx PermSize = 12582912 {pd product}
java version "1.6.0_24"
在我的 Windows 系统上,我得到:
C:\>java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version"
uintx AdaptivePermSizeWeight = 20 {product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx InitialHeapSize := 16777216 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 268435456 {product}
uintx MaxPermSize = 67108864 {pd product}
uintx PermSize = 12582912 {pd product}
java version "1.6.0_21"
这是-client
设置,似乎没有-server
选项:
C:\>java -server -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version"
C:\>java -server -XX:+PrintFlagsFinal -version
Error: no `server' JVM at `C:\jdk\jre\bin\server\jvm.dll'.
于 2012-08-17T10:28:04.713 回答