1

ヒープはRAMの一部ですが、RAMの一部を超えるヒープサイズを定義できないという制限があります。例:-32ビットのwinodwsxpOSと4GBのRAMがあります。しかし、1600MBを超えるヒープサイズを宣言することはできません。ここでの私の質問は、ヒープサイズを4GBのRAMよりも低い3GBなどの大きな値に宣言できない理由です(32ビットの場合は最大4GBのRAMを使用できます)?これは単一プロセスに当てはまります。

つまり、それぞれに1600MBのヒープサイズを割り当てる2つのTomcatまたはその他のJavaプロセスを開始できますが、1つのプロセスに3200MBを割り当てることはできません。その背後にある理由は何ですか。

4

2 に答える 2

1

32ビットウィンドウでは、1つのプロセスに2GBのアドレス空間しか許可されません(特別な拡張機能は有効になりません)。OSは残りの2GBをそれ自体のために保持します。そして、そのヒープの上に、JVMが必要とするすべてのメモリがあるわけではありません。permgenスペースと、JVM自体のコードが使用するメモリがあります。

于 2012-04-24T08:32:09.247 に答える
0

64ビットでない場合は4GBを割り当てることができません。

于 2012-04-24T08:32:14.910 に答える