9

JVM のドキュメントによると、使用する Xms パラメータが大きすぎると、JVM が起動しません。それで、私はそれを使わないとどうなりますか?VM は無期限に拡張できますか? 物理メモリが不足した場合にのみ停止しますか?

4

2 に答える 2

8

XMX は最大ヒープ サイズです。

使わないとどうなるの?

省略した場合は、デフォルトが使用されます。デフォルトは、JVM のバージョンと、それが実行されているプラ​​ットフォームによって異なります。バージョン5の詳細はこちら

サーバークラスのマシンでは、デフォルトで以下が選択されています。

...

最大 1G バイトまでの物理メモリの ¼ の最大ヒープ サイズ

于 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 に答える