2

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

余談ですが、JProfiler を使用してメモリを記録すると、アプリケーションのオーバーヘッドが大きすぎるように思われるため、長時間メモリを記録できない (メモリのピークにすぐに達する) か、オーバーヘッドが何らかの形でアプリケーションの動作に干渉/影響を与えます。また、録音メモリー。これに関する提案はありますか (これを回避するためのスイッチがありません)? 私は基本的にダイナミック インストルメンテーション オプションを使用しますが、覚えている限りでは、サンプリングを数回使用しても同じ効果がありました。

4

2 に答える 2

0

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

編集: SOの何人かの人々は私に同意しました。 JProfilerとYourKitのどちらのJavaプロファイラーが優れていますか?

于 2012-04-05T15:18:24.097 に答える
0

GC を出力するための jvm フラグを有効にします: -XX:-PrintGCDetails ガベージ コレクションで詳細を出力します。管理可能。(1.4.0 で導入されました。)

あなたができるもう1つのことは、ビジュアルGCプラグインでJVisualVM(jdk1.6でビルド)を使用することです: http://visualvm.java.net/plugins.html

于 2012-04-05T15:24:56.170 に答える