割り当てサイトの注釈を使用して Java ヒープ ダンプを取得できる既存のツールはありますか? このようなヒープ ダンプを使用すると、クラス タイプごとの集計に加えて、ランタイム オブジェクトを割り当て場所 (大まかに言えば、オブジェクトを作成する新しいステートメント) ごとに集計できます。
この種のヒープ ダンプが利用可能であると仮定すると、リークのデバッグに役立つと思いますか?
割り当てサイトの注釈を使用して Java ヒープ ダンプを取得できる既存のツールはありますか? このようなヒープ ダンプを使用すると、クラス タイプごとの集計に加えて、ランタイム オブジェクトを割り当て場所 (大まかに言えば、オブジェクトを作成する新しいステートメント) ごとに集計できます。
この種のヒープ ダンプが利用可能であると仮定すると、リークのデバッグに役立つと思いますか?
私はこの機能をHPjmeterに組み込むのを手伝いましたが、これはプラットフォーム固有の機能でした (つまり、Itanium/HP-UX でのみ利用可能でした)。これは、特定の種類の問題を解決するのに役立ちます (たとえば、大量の短期割り当てを行って GC プレッシャーに寄与しているサイトを特定するなど)。ほとんどのリークでは、リークしているオブジェクトがオブジェクト グラフを支配しており、標準ツールはこれを視覚化するのに役立ちます。
これが実際に開発環境である可能性は低いですが、このデータを収集するためのフラグは次のPrintAllocStatitistics
とおりです (これもプラットフォーム固有です!)。
java ... -XX:+PrintAllocStatistics -Xverbosegc[0|1][:file=[filename[,[n][h][d][u][t]]]]
この機能の詳細については、オンラインドキュメントを参照してください。割り当て統計の検索