根据JVM的文档,如果使用过大的Xms参数,JVM将无法启动。所以,我问,如果我不使用会发生什么?我的VM是否可以无限期增长?它只会在物理内存耗尽时停止吗?
答案 0 :(得分:5)
XMX是最大堆大小。
如果我不使用它会发生什么?
如果省略,则使用默认值。默认值因JVM版本及其运行的平台而异。版本5的详细信息are here。
默认情况下,在服务器级计算机上选择以下内容。
...
最大堆大小为1/4的物理内存,最大为1Gbyte
答案 1 :(得分:3)
如果您未指定-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'.