GCは問題のオブジェクトを指す参照を持たないオブジェクトを収集するが、リスナーオブジェクトのイベントはどうなるのだろうか?GCはオブジェクトの収集時期をどのように知っていますか?
DataSupplier
のデータをリッスンするAnimationDelegate
があるとします。 DataSupplier
がデータを受信してイベントをAnimationDelegate
に送信すると、代理人はGraphic
を無効にします(/更新/再描画など)。ここでは、画面が無効になっている、削除されている、またはさまざまな方法で、グラフィックを描画できなくなり、収集されたとします。 AnimationDelegate
はまだDataSupplier
に登録されています。 GCはそれをどのように収集することを知っていますか?デリゲートをグラフィックスfinalize()
メソッドで登録解除する必要がありますか?
リファレンスカウントを使用します。基本的に、オブジェクトへのポインタがなくなると、次のGCパスでガベージコレクションされます。 – aroth
@arothそうではありません。 – alf
実際はすべて実装に依存します。いくつかは依然として参照カウントを使用していますが、HotSpot JVMに付属のGCはそうではないと思います。 –