私はむしろメモリが空いているJavaアプリケーションを持っています。 Windows XP Professionalを搭載した私の32ビットシステムでは、-Xmx1280m
とすればアプリケーションは正常に動作します。以下のすべてがjava.lang.OutOfMemoryError: Java heap space
例外になります。64ビットシステムで32ビットプロセスを実行すると、それ以上のメモリが必要ですか?
同じアプリケーションを64ビットWindows XP Professional上で実行する場合は、OutOfMemory条件を防ぐために-Xms1400m
が必要です。
私はCプログラムを持っていて、それを32ビットと64ビット用にコンパイルすると、 の64ビットバージョンはポインタが広くなるなどの理由で、より多くのメモリが必要になります。 しかし私のJavaの例では、仮想マシン(Sun)は同じで、バイトコードも同じです。
なぜ64ビットマシンでより多くのメモリが必要ですか?
これは、32ビットモードで実行すると4バイト、64ビットモードでは8バイトのポインタを表すIntPtrクラスを持っているため、.NETでより明白です。 – Powerlord
ええと、もし64ビットで違いがあったら、2GB以上は扱えると思っていますが、できません。 -Xmx1400mは、Javaが64ビットマシンで受け入れる最大値です。私は短所(メモリが肥大)ではなく、利点(より大きなプロセスアドレス空間)しか得られないようだ。 –
あなたのためのJava私はそう思うが、私はJVM実装の詳細について知識がない。 –