今日、JVM の初期化に関して奇妙な問題に遭遇しました。
2 つの異なる PC で同じ jar を開くコマンドを実行します。両方の PC の Java バージョンは同じで、どちらも 32 ビットです。
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)
1台のPCは以下の構成
Windoex XP Service Pack 2 Amd Athelon プロセッサ 7750 デュアル コア 2 GB の DDR2 RAM
XPマシンで次のコマンドを実行すると
java -Xms1200m -Xmx1500m -XX:MinHeapFreeRatio=40 -XX:MaxHeapFreeRatio=70 -jar my.jar
このマシンには 2GB の物理 RAM しかありませんが、VM はエラーなしでプログラムを開くことができます。
現在、他の PC の構成は、Windows Vista Home Edition Intel P4 コア 2 Duo 4 GB の DDR2 RAM に従っており、コンピューターのプロパティをクリックすると、4 GB の RAM が表示されます。
このマシンで上記のコマンドを実行すると、エラー メッセージが表示されます
「初期化中にエラーが発生しました」
-Xmx > 1200 を指定してコマンドを実行しようとすると、エラーが発生します。
最初のマシンよりも 2 倍の RAM があるのに、後のマシンで VM 初期化エラーが発生する理由がわかりません。