
私のシステムは 8Gb と報告していますが、Java プログラム用に 6.5Gb のヒープ スペース、または 4Gb を予約しようとすると失敗します。これは 32 ビット バージョンをインストールしたためでしょうか?
ヒープ割り当てに失敗しました java -Xmx3072m -jar {...}
正常に起動しましたが、アプリのメモリが不足しています。java -Xmx2048m -jar {...}
答え1
信じられないかもしれませんが、これはよくある質問です。答えはここ:
「32 ビット JVM の理論上の最大ヒープ制限は 4G です。使用可能なスワップ、カーネル アドレス空間の使用、メモリの断片化、VM オーバーヘッドなどのさまざまな追加制約により、実際の制限ははるかに低くなる可能性があります。最新の 32 ビット Windows システムでは、最大ヒープ サイズは 1.4G から 1.6G の範囲になります。32 ビット Solaris カーネルでは、アドレス空間は 2G に制限されています。32 ビット VM を実行する 64 ビット オペレーティング システムでは、最大ヒープ サイズはより大きくなり、多くの Solaris システムでは 4G に近づきます。
Java SE 6 以降では、Windows /3GB boot.ini 機能はサポートされていません。
アプリケーションで非常に大きなヒープが必要な場合は、64 ビット アプリケーションをサポートするオペレーティング システムのバージョンで 64 ビット VM を使用する必要があります。詳細については、「Java SE でサポートされるシステム構成」を参照してください。