2012-04-05 9 views
2

JVMの特定の世代(eden、oldなど)にどのような特定のオブジェクトが含まれているかを確認する方法はありますか?どのオブジェクトが問題になっているのかを正確に把握する方法を見つけようとしています。私はJProfilerを使用しています。記録するメモリはライブとGCedオブジェクトをいつでも表示しますが、オブジェクトがどの世代にあるかは分かりません。私はそのようなGCデバッグオプションも見つけられないようです。JVMでどのオブジェクトが特定の世代にあるのか、どのように確認できますか?

JProfilerでメモリを記録すると、アプリケーションにオーバーヘッドが発生しているように見えるので、長時間メモリを記録できない(ピークメモリにすばやく到達する)か、オーバーヘッドが何らかの方法で干渉してアプリケーションの動作。また、メモリを記録します。これについての提案(これを避けるためにスイッチがないのですか?)私は一般的にダイナミック・インストルメンテーションのオプションを使用していましたが、私がサンプリングを使用した回数を覚えている限り、同じ効果がありました。

答えて

0

yourkitあなたが望むことができます。より正確に言えば、マイナーなメジャーなガベージコレクションとメジャーなガベージコレクションを見ることができます。

編集: SOの一部の人々は私と一緒に同意しました。 Which Java profiler is better: JProfiler or YourKit?

+0

おかげで、YourKitをチェックアウトします! – prams

+0

@UmNyobeこの機能について言及していますか? http://www.yourkit.com/features/index.jsp#generations – fglez

+0

this one http://www.yourkit.com/docs/java/help/gc_telemetry.gif – UmNyobe

0

印刷用にjvmフラグを有効にするGC: -XX:-PrintGCDetailsガベージコレクションで詳細を印刷します。管理可能。あなたが行うことができます別のものは、視覚GCプラグインで(JDK1.6でそれを構築する)JVisualVMを使用している(1.4.0で導入。)

http://visualvm.java.net/plugins.html

関連する問題