2017-07-19 7 views
1

私はJavaの初心者です。最大ヒープ・スペース・サイズを制限しても、JVMがページング・イン/アウトを実行する方法は?

Javaで実装された分散フレームワークの上でアプリケーションを実行します。 アプリケーションはディスクおよびネットワークI/O集約ジョブです。

各マシンには32 GBのメモリがあります。マシンあたり4人の作業者を実行し、それぞれに7 GBのヒープスペースを割り当てます。合計で、JVMのために予約されている28 GBのメモリスペースがあります。残りの4 GBはOS用に予約されています(Cent OS 7)。同時に動作している重いプログラムはありませんでした。

驚いたことに、システムリソースの使用状況をdstatで監視すると、かなりの量のページングが発生しています。

どうすれば可能ですか?私はJVMのメモリ使用を制限しました!

ありがとうございました

+2

なぜ最大ヒープ使用を制限するとページングが無効になると思いますか?どのフレームワークを使用していますか? – alpert

+0

ヒープはJVM全体ではありません。ヒープは、1つのメモリ領域(多くの場合、最も重要な領域ですが、1つだけです) –

答えて

2

JVMはメモリをページアウトしません。オペレーティングシステムは動作します。どのようにしていつOSがどのページを退去させるかは、構成によって異なります。 -Xmxのみを設定すると、はJVM内のマネージヒープの上限を設定します。 IOを実行するたびに、ファイルマッピング、ダイレクトメモリ割り当て、ネイティブライブラリ、またはメモリに保持されているページキャッシュは制限されません。

OSはそれについて何も知らず、JVMは他のJVMのことを知らないので、実際にはJVMの28GBを「予約」していません。

関連する問題