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