3

アプリケーションのプロファイリングにJProfilerを使用しています。ガベージコレクターを実行すると、マークされたすべての記録済みオブジェクトが緑色になり、しばらくすると、作成されたオブジェクトと破棄されたオブジェクトの違いに再び直面することに気付きました。
ちなみに、この時点で私のアプリケーションはまだ実行中ですが、私のアプリケーションはメモリリークの問題に直面していますか、それともこれは正常です。
状況を理解するのに役立つ可能性のあるスナップショットがいくつかあります
ここに画像の説明を入力してください

上記は、ガベージコレクターを実行したときのスナップショットです...

しかし、しばらくすると、これらのバーは部分的に緑と赤になります...

4

1 に答える 1

2

通常、特定のオブジェクト( char []など)が占めるサイズがGCにもかかわらず増加し続ける場合は、メモリがリークしていると言えます。

GCの後で、特定のタイプのオブジェクトに対して再び「赤」が表示されれば、通常は問題ありません。私はあなたのアプリケーションが何らかの仕事をしてゴミを生成していると仮定しています。したがって、それ自体は問題ではありません。ただし、サイズが大きくなり続ける場合は、それが問題になる可能性があります。

良い戦略は、GCの前後の特定のオブジェクト( char []など)の割り当てサイズを記録し、収集されているオブジェクトの量を確認することです。この演習を一定期間繰り返します。サイズが大きくならない場合は、問題ないはずです。

ただし、ここで重要な点は、負荷プロファイル(リクエストの数、バックグラウンドジョブなど)が同じであることを確認することです。そうしないと、メモリプロファイリングの結果は比較対象になりません。

于 2012-02-24T08:21:08.617 に答える