2017-04-06 7 views
0

私はしばらくHPのメディアセンターを使用していましたが、約4ギガバイトのRAMしか持っていませんでしたので、もちろん32ビットのWindows 7を実行しています.Javaを使用するプログラム仮想マシンと私はそれとjvmの引数を使用することができますが、私はより多くの癒しの空間が必要と私は十分なラムを持っていないので、プログラムのラムの代わりにまたはスワップを使用することができたと聞いた。ですから、プログラムでRAMとスワップを使用するか、スワップするために使用できるjvmの引数またはプログラムはありますか?どんな返答も帽子が助けてくれれば幸いです誰かが言う前に、はい、私は通常のHDDを使用しているので、スワップはRAMよりも遅いことを知っています。Ram +スワップJVM疑惑/ツール?

+0

あなたの質問を正しく理解していれば、32ビットのOSを使用しています。これは32ビットのJVMを意味します。したがって、JVMに割り当てられる最大メモリは4GBだと思います(http://stackoverflow.com/questions/1434779/maximum-java-heap-size-of-a-32-bit-jvm-on-aを参照)。 -64ビットのos)。たとえあなたが4GBを割り当てても、O/Sはいくつかの部分をディスクにスワップします。 – KevinO

答えて

1

これは私が知る限り、jvm引数ではありません。 jvmプロセスのヒープは、実行されているOSから取得されます。これは、仮想メモリのから取得したもので、すでにスワップ領域がある場合はそれを含みます。どのくらいのスワップがあなたのOSを持っているのかは全く同じですOS。 32ビットのウィンドウを実行しているので、あなたのjvmも32ビットです。 32ビットJVMの場合、理論的にはは最大4GBのRAMを使用できます。練習では、通常1.3GB(コメントに記載されているとおり)ではありません。スワップを追加しても、あなたの人生が楽になるわけではありません。まず、64ビットOSが必要です。

+1

Window 7の32ビットプロセスでは理論上の制限さえも3 GiBですが、コード、I/Oバッファ、およびその他の非ヒープデータも含まれます。しかし、JVMの実装では、ヒープに2つ以上のGiB(アドレス空間がより小さい)を使用することはできません。そのため、 "largeaddressaware"フラグを付けずにネイティブライブラリのコードとデータを差し引かなければならないので、1.6 GiBを取得した場合、通常1.3 GiBに似ています。 – Holger

+0

@Holger正直言って、私はどれくらい手に入れるか見たくもしていない。それは私が見て覚えているものだったので、それを当然受け取りました。更新されます。 – Eugene

+1

お客様にこの問題がありました。 32ビットJVMを使用する1つの理由は、jd​​bc-odbcブリッジであり、odbcドライバは「largeaddressaware」ではなかったため、使用可能なヒープは、ロードされたとき、または他の方法でラウンドしたときに、最大ヒープGiBから1.5GiBまで、ネイティブリソースが不足してドライバをロードできませんでした。しかし、JVMによって使用されるライブラリ(またはそのバージョン)もすべてのアップデートで変更されているように見えました。したがって、最大のヒープを見つけ出す試行錯誤がありました(すべてのバイト数は実際にパフォーマンスに影響しました)。 – Holger