NetBeans Profiler 5.5 の使用方法
相対 GC 時間と生存中世代数
「VM 遠隔測定」タブの「メモリー」タブには、アプリケーションのガベージコレクションに関する次の情報が表示されます。
- 相対時間。 相対時間は、すべてのアプリケーションスレッドが中断され、ターゲット JVM がガベージコレクションに費やす合計実行時間の割合として測定されます。
- 生存中世代。 Profiler が接続されたときからの、JVM のヒープに割り当てられたすべてのオブジェクトの各世代数を表します。
- オブジェクトの年齢。 オブジェクトの年齢は、何回のガベージコレクションを経て生存しているか、その回数で測定されます。
この数値が徐々に増加していると、通常、リークしているオブジェクトがあることを示します。一方、この測定値が安定していて、以降も目立った増加がない場合は、アプリケーションにメモリーリークの増加がないことを示しています。
メモリー使用率の増加が観察された場合、この情報が役立つことがあります。そうした状況では、通常、メモリーリークが疑われます。しかし、そうした状況であっても、生存中世代数が安定したままであることが明らかになった場合、問題の原因はメモリーリークではなく、ほかの問題である可能性があります。
1 つの例は、同時スレッド数が増加し、各スレッドがきわめて短時間で大量のメモリーを割り当てていることです。その場合、メモリー使用率の漸増が観察され、最終的にメモリー不足エラーが発生する可能性があります。しかし、各スレッドは割り当てたオブジェクトを短時間で解放するため、リークはなく、メモリーのリサイクル率は実際にはきわめて高くなります。
技術的な理由のため、ターゲット JVM で同時マークアンドスイープガベージコレクタが使用されている場合、この監視は機能しません。これは、-XX:+UseConcMarkSweepGC または -Xconcgc の JVM コマンド行オプションを使用して起動するガベージコレクタです。
関連項目
