2番目のスナップショットにあるオブジェクトではなく、ベースラインのスナップショットにないオブジェクトは、どのようにして新しく表示されますか?オンラインで見て、私はメモリダンプを作るためにjmapの代わりにhprofを使う必要があると示唆していますが、hprofはまったく同じフォーマットでダンプを生成するようです。jhatの-baselineオプションが機能しないのはなぜですか?
これはJDK 1.6.0_14です。私はWindowsとUNIXの両方で試しました。
2番目のスナップショットにあるオブジェクトではなく、ベースラインのスナップショットにないオブジェクトは、どのようにして新しく表示されますか?オンラインで見て、私はメモリダンプを作るためにjmapの代わりにhprofを使う必要があると示唆していますが、hprofはまったく同じフォーマットでダンプを生成するようです。jhatの-baselineオプションが機能しないのはなぜですか?
これはJDK 1.6.0_14です。私はWindowsとUNIXの両方で試しました。
jhat -baseline
は確かjmap
によって生成ダンプでは動作しません。私は確信していませんが、はと考えています。これは、hprofが最初からJVMに直接接続してオブジェクトのトラックを保持し、複数のダンプ間で一貫したIDを生成できるためです。それについて私を引用しないでください。いずれにせよ、重要な点は、jmapのダンプがうまくいかないことです。
ただし、すべてが失われることはありません。行ってEclipse Memory Analyzerを取得します。 (Eclipseを使用しない場合は、スタンドアロンの実行可能ファイルとしてそれを得ることができ、恐れることはない。)それはjhatよりも高速ですが、jhat より少ないメモリを使用し、それはあなたがやりたいことができます。
これはすべてjmapのダンプでうまく動作します。
恐ろしい!そこからダンプ2の新しいオブジェクトにドリルダウンし、それらを保持しているものを見つける方法がありますか? – skiphoppy
私が知る限り、比較から直接ではなく、いいえ。あなたは全体のセットからドリルダウンすることができます。 (Dominator Treeを選択して、興味のあるクラスにフィルタをかけ、右クリックして、受信した参照を含むオブジェクトを一覧表示し、必要に応じてツリーを展開してください。)特定の新しいオブジェクトを保持しているものを見ることができるということは、役に立つが、私はそれをする方法を知らない。 –
hprofを使用する必要があるようです。しかし、あなたは同じVMインスタンスを使用していますか?
-baselineオプションを使用すると、HPROFおよび同じVMインスタンスから生成された2つのダンプを比較できます。両方のダンプに同じオブジェクトが表示された場合は、報告された新しいオブジェクトのリストから除外されます。 1つのダンプがベースラインとして指定され、ベースラインが取得されてから2番目のダンプで作成されるオブジェクトに焦点を当てることができます。
すべてが新しいと見なされる場合、そのVMの同じインスタンスであることを確認します。
プラットフォームのバージョン(Windows?Unix?)とjdk? – VonC