実行時に任意のオブジェクトでこれを実行することはできません。実際には、これを確定的に行うことは完全には不可能です。しかし、ニーズに応じて、適切である2つのオプションがあります。
- あなたは
null
への参照を設定した後、ヒープ・ダンプを取り、そしてそのようなjhatなどヒープ・アナライザ・ツールまたはプロファイラでそれを読み込みますこれをサポートします。これらのツールを使用すると、GCルートからパスをたどって、オブジェクトがまだ到達可能かどうかを確認できます。
- PhantomReferenceのオブジェクトを指定して
ReferenceQueue
にラップします。参照がエンキューされると、オブジェクトがガベージコレクションされたことがわかります。 (残念ながら、参照がキューに入れられていない場合、オブジェクトにまだ到達可能である可能性があります。または、GCがまだオブジェクトを検査していないことが原因である可能性があります。全体的に)
しかし、私は最良の選択肢は、メモリリークの問題の意識こと、それらを避けるために、アプリケーションを設計することであることに同意します。メモリリークが発生している場合は、十分なはずです。そして、問題を発見するためにエネルギーを集中させることができます(不正に到達できないオブジェクトのヒープをダンプして分析することによって)。
上記の手順は比較的時間がかかりますが、変更するたびに行うことではなく、固有のの問題を調査するためのツールです。
それは私たちが記憶上の問題を経験したhuuuuuuuuuuuuuugeアプリケーションです。 1つの最適化が改善につながるはずですが、期待したほどのものではありません。したがって、特定のオブジェクトがガベージコレクションされているかどうかを知りたいと思っています。あなたの返信をありがとう、私はそれを試してみましょう! – swalkner
あなたは純粋なごみを得るでしょう:D – delive