9

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

4

2 回答 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 回答