Javaオブジェクトがある場合、そのオブジェクトを参照するオブジェクトのリストを取得するにはどうすればよいですか?オブジェクトを参照するオブジェクトのリストを取得する
この種の処理を行うにはGCに拡張機構が必要ですが、見つからないように見えるだけです。
Javaオブジェクトがある場合、そのオブジェクトを参照するオブジェクトのリストを取得するにはどうすればよいですか?オブジェクトを参照するオブジェクトのリストを取得する
この種の処理を行うにはGCに拡張機構が必要ですが、見つからないように見えるだけです。
あなたの後ろのものが簡単にアクセスできるかどうかは分かりません。
JPDA(Java Platform Debugger Architecture)はデバッガの構築を可能にするため、内部を掘り下げたい場合には適しています。役に立つかもしれないblog on the JPDAがあります。ドキュメント、FAQ、サンプルコード、フォーラムへのリンクについてはSun Developer Network JPDA pageをご覧ください。良好な出発点であってもよい
2つのインタフェースは、次のとおり
このようなメカニズムはありませんし、GCに必要な実際の理由はありません。
メモリリークを探している場合は、Eclipse MATでヒープダンプを解析すると非常に便利です。オブジェクトを選択して「GCルーツ」へのパスを尋ねることができます。つまり、このオブジェクトをガベージコレクションすることを維持しているすべての参照チェーンを表示することができます。
をデバッグ対象あなたが必要とする情報ヒープダンプを取る別の方法はhereです。
GCはこれをサポートしていませんが、JDPA APIはこれをサポートしていません。しかし、私はJavaアプリケーションでこのようなことをすることに非常に慎重になるでしょう。時間とメモリの両方で非常に高価になる可能性があります。
GCは、ガベージコレクションを行うかどうかを知るために、オブジェクトへの参照が存在するかどうかを知る必要があります。 – notnoop
@msaeed:いいえ、GCはオブジェクトが参照されているかどうかを知る必要がありますが、マーク中に1つの参照が見つかった場合は、参照を保持しているオブジェクトについて何も知る必要はありません)オブジェクトは生きていて、知る必要があるだけです。 – Fredrik
@Fredrik:循環参照がガベージコレクションでどのように説明されていますか? – zakovyrya