如果不使用Xmx会发生什么?

时间:2012-07-09 14:04:54

标签: jvm

根据JVM的文档,如果使用过大的Xms参数,JVM将无法启动。所以,我问,如果我不使用会发生什么?我的VM是否可以无限期增长?它只会在物理内存耗尽时停止吗?

2 个答案:

答案 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'.