Windows 7 64 ビットで 32 ビット バージョンの Java を使用しています。システムには 6 GB の RAM があります。ただし、JVM が OS によってメモリを割り当てられる場合、1.5 GB を超えません (32 ビット OS と同じ)。JVMに十分なメモリが許可されていないという考えられる理由は何ですか。また、可能であればどのように修正しますか?64 ビット JVM にアップグレードできません。
4 に答える
Windows 上の 32 ビット プロセスには、32 ビット Windows OS での実行と同じ制限が適用されます。この質問への回答を参照してください。
64 ビット オペレーティング システムで 32 ビット プロセスがアクセスできるメモリの量はどれくらいですか?
Oracle からのこのガイダンスは、32 ビット JVM が約 1.5GB を使用できることを示唆しています。
32 ビット JVM の理論上の最大ヒープ制限は 4G です。利用可能なスワップ、カーネル アドレス空間の使用、メモリの断片化、VM のオーバーヘッドなど、さまざまな追加の制約があるため、実際には、制限ははるかに低くなる可能性があります。最近のほとんどの 32 ビット Windows システムでは、最大ヒープ サイズは 1.4G から 1.6G の範囲です。
より多くのメモリを使用できるようにするには、64 ビットにアップグレードする必要があります。残念ながら、64 ビットの JVM は 32 ビットの dll をロードできないため、dll への呼び出しは別のプロセスから行う必要があり、dll を直接使用する代わりに rpc メカニズムを使用してプロセスと通信する必要があります。それは多い。仕事のしかし、それは行うことができます。
この記事で示されているように:
デフォルトの最大ヒープ領域は、最大 192 バイトのサイズの物理メモリの 1/2、最大 1G のサイズの物理メモリの 1/4 です。
あなたが 1G 以上を持っていることは知っていますが、これも当てはまるかもしれません。