GCの制御に「弱い参照」って作れませんでしょうか。
オブジェクトAとBが相互参照していても
その相互参照以外の参照ルートがなくなるとGCが回収してくれて、
回収時にデストラクタでメッセージングして相互参照を消すコードを書くような形で。