1

permgen メモリ リーク バグと戦っています。実行中のシステムをチェックする能力が非常に限られているため、ソース コードをさまようことを余儀なくされています。検索範囲を縮小するために、(おそらく) permgen 領域からメモリを消費するメソッドのみを見つけたいと考えています。

たとえば、確実に呼び出されるルート メソッド セットがあります。そのセットから、おそらく permgen 領域からメモリを消費するメソッドへのパスを見つける必要があります (つまり、String.intern() が呼び出されるなど)。現在、私は 2 つの問題に直面しています: メソッドが permgen スペースを消費しているかどうかを判断する方法と、2 つ目 - バイトコードをたどって実行パスをたどるにはどうすればよいですか?

事前に感謝します。どんな情報でも大歓迎です!

4

1 に答える 1

2

より良い方法は、メモリ ダンプを取得し、Eclipse メモリ アナライザーを使用して、PermGen 領域でスペースを占有しているクラス定義と文字列を調査することです。

次のフラグ -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled を追加して、PermGen 領域のスワイプを有効にすることもできます。

于 2012-03-27T20:15:52.977 に答える