私たちが通常使用する JVM はすべて 32 ビットであり (64 ビット JVM はパフォーマンスが 10 ~ 20% 低下するため、通常は推奨されません)、32 ビット プログラムのアドレス空間は 4GB である必要があります。なぜ Linux 上で JVM が使用されるのか。メモリは2GBしか使えないの?
JDK R&D チームと連絡を取った後、最終的に関連する理由がいくつかわかりました。この問題は、一部の初期の Linux バージョン、特にカーネル 2.5 より前のバージョンに存在します。2.6 以降のバージョンには、基本的にこの問題はありません。これらの Linux バージョンにはプロセスのメモリ制限が 2GB あり、これは連続したアドレスを持つメモリ ブロックのサイズの上限であり、JVM のヒープ サイズには連続したアドレス空間が必要であるため、理論上の使用量は 2GB であることがわかりました。 Java プロセスのメモリ制限。
Java アプリケーションがより大きなメモリを使用する必要がある場合は、新しいバージョンの Linux を使用するか、Linux アプリケーションとカーネルのメモリ比率構成を 3GB:1GB に変更することをお勧めします。 Solaris などの UNIX オペレーティング システムを選択するオプションもあります。 Solaris などのオペレーティング システムでは、JVM メモリ管理に 2 GB の制限がないため、ヒープ サイズは約 3.5 ~ 3.6 GB に設定できます。
Linux システムにおける JVM メモリの 2GB の上限に関する詳細な説明については、PHP 中国語 Web サイトに注目してください。