1

Windows 2003 サーバーです。

いくつかのパフォーマンス テストを実行していますが、次のように表示されます。

  1. 最初の 5 時間では、1 秒あたりのページ フォールトは 10 または 20 のように非常に小さくなっています。

  2. 過去 1 時間で、ページ フォールトは 500 ページ フォールト/秒に跳ね上がります

  3. 過去 1 時間で、フル GC が大量に発生しています。

64G のように十分な RAM があり、システム全体でその半分しか使用していないため、多くのハード ページ フォールトは発生しないことに注意してください。

私が知りたいのは、JVM が GC を実行している場合、GC を実行しない場合と比較して、大量のソフト ページ フォールト/秒が発生することが予想されるということです。

4

1 に答える 1

1

インクリメンタル ガベージ コレクタは、その実行をmutatorとインターリーブします。これにより、次の 2 種類の問題が発生する可能性があります。

  1. mutator は、ガベージ コレクターが既に分析したオブジェクトを変更する場合があります (たとえば、参照の更新)。この場合、コレクターは、変更を考慮できるように、変更について通知する必要があります。

  2. コピー元のコレクターの場合、ミューテーターは、コレクターが移動したオブジェクトを見たいと思うかもしれません。この場合、ミューテーターがオブジェクトの新しいコピーにリダイレクトできるように、移動されたオブジェクトからの読み取りの試みについてコレクターに通知する必要があります。( 「壊れた心」に格納されている転送ポインタを使用します。)

問題 (1) は、コレクターが分析を終了したページにハードウェア書き込みバリアを配置することで解決できます。問題 (2) は、移動されたオブジェクトを含むページにハードウェア読み取りバリアを配置するコレクターによって解決できます。

ミューテーターがこれらのバリアにヒットすると、ページ フォールトが生成され、フォールト ハンドラーがガベージ コレクターから適切な関数を実行します。

(これが Windows で JVM ガベージ コレクターがどのように機能するかはわかりませんが、インクリメンタル ガベージ コレクション中にページ フォールトの増加が予想されます。)

于 2013-04-05T19:19:36.027 に答える