Jvm 如果不使用Xmx会发生什么?
根据JVM的文档,如果使用太大的Xms参数,JVM将无法启动。所以,我问,如果我不使用它会发生什么?是否允许我的虚拟机无限期增长?它是否仅在物理内存耗尽时停止?XMX是最大堆大小 如果我不使用它会发生什么 如果省略,则使用默认值。默认值因JVM版本以及运行它的平台而异。第5版的详细信息 默认情况下,在服务器类计算机上选择以下选项 物理内存的最大堆大小为¼,最大可达1G字节Jvm 如果不使用Xmx会发生什么?,jvm,Jvm,根据JVM的文档,如果使用太大的Xms参数,JVM将无法启动。所以,我问,如果我不使用它会发生什么?是否允许我的虚拟机无限期增长?它是否仅在物理内存耗尽时停止?XMX是最大堆大小 如果我不使用它会发生什么 如果省略,则使用默认值。默认值因JVM版本以及运行它的平台而异。第5版的详细信息 默认情况下,在服务器类计算机上选择以下选项 物理内存的最大堆大小为¼,最大可达1G字节 如果您没有指定-Xmx,那么您将获得操作系统、jvm及其选项和版本的默认分配 考虑到可能会影响值的事情的数量以及浏览文档所
如果您没有指定
-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'.