2

JMX を使用して、古い世代のコレクション カウントをリモートで別のアプリケーションに取得しようとしています。私の最初のアプローチは、MemoryPool オブジェクトと GarbageCollector オブジェクトを調べることでした。MemoryPool -> PS Old Gen -> MemoryManagerNames の下にあることがわかります。

  1. PSマークスイープ

ここで、GarbageCollector -> PS MarkSweep -> CollectionCount を見ることができます。ただし、PS Eden Space メモリ プールには同じアルゴリズムが登録されています。

  1. PSマークスイープ
  2. PSスカベンジ

1 つのプールに固有の情報を取得する方法が必要です。VisualGC には次のことを知る方法があります。

visualgc

4

1 に答える 1

0

簡単に言うと、ガベージ コレクションは常に JVM 全体で行われます (メモリ プール固有ではありません)。一部のアルゴリズム (例: 若いコレクション - PS Scavenge) は 1 つのプールのみを処理する場合がありますが、他のアルゴリズム (PS Mark Sweet) はヒープ全体 (eden + 古いスペース + perm スペース) を処理します。

したがって、eden スペースの PS マーク スイープの特定のカウントはありません。JVM で実行された PS マーク スイープの合計数だけがあります。

VisualConsole に表示される数値は、GarbageCollector -> PS MarkSweep -> CollectionCount MBean に表示される数値と同じです。

于 2012-09-28T06:19:10.883 に答える