追跡する
このコンテキストによると、オブジェクトへの複数の参照がある場合、オブジェクトの破棄をどのように処理できますか?
これらの参照がもう必要ないことを確認することによって。
それらを分離すると、使用されていないオブジェクトがメイン プログラムに接続されていない大きな分離グラフであっても、それらはすべてガベージ コレクションの対象になります。
スコープの終わりに達したローカル変数は、ガベージ コレクションの対象となります (また、含まれているオブジェクトもそうです)、それらが他のオブジェクトに "リンク" されていない場合 (コレクションに追加されたり、ac omposite などに追加されたりします...) . オブジェクト グラフの観点から判断するのが実際に困難な UI オブジェクトについては、それらを正しく破棄するか、ドキュメントを読んで自然に破棄されることを確認してください。

「【GC】放っておいて!!」
または、相互に複雑な参照がある場合、メモリをどのように管理する必要がありますか?
メモリを「管理」することはできません。参照を簡単に管理できます。アイデアは、オブジェクトへの参照を持たないようにすることで、オブジェクトへの接続を「切断」することです。その後、GC がそれらを駆除するまで、それらはメモリ内に存在します。
GC をいじって強制的に何かをさせようとしないでください。それはかなり賢い獣であり、いくつかのリクエストに明示的に反応するように指示することはできますが、無視される可能性があります-通常は悪い考えです.GCを明示的に呼び出さないでください.理解できない場合はファイナライザーと明示的なnullを避けてください.それらの意味。
あなたのコメントに答えるために注意してください
複数のコレクションまたはコンポジットに追加されたオブジェクトへの参照を単純に nullにするだけでは、コレクションの対象にはなりません。これを行うことで、参照を 1 つだけ null にすることができます。
このオブジェクトへの参照を持つすべてのリストまたはコンテナからこのオブジェクトを削除する必要があります (基本的に、このオブジェクトを「忘れる」ようにします)。作成したオブジェクトへの「記憶」または「リンク」を持つオブジェクトがなくなると、そのオブジェクトはガベージ コレクターのグラフで孤立したアイテムになり、削除の候補になります。
面倒に聞こえるかもしれませんが、メモリを手動で管理する言語 (C または C++、最も明白な参照を 2 つ挙げるとします) から考えると、動的に割り当てられたオブジェクトへのポインターを解放および null すると、実際にそれらが破棄されます。 、ただし、リスト (またはコンテナー) から要素を削除する必要があります。そうしないと、null ポインターへの空のバケツのように表示されます。
参考文献