問題文
私は2台のマシンAとBを持っており、どちらもClojureを実行しています。
Bにはメモリデータ構造があります。
Aは、Bのメモリ内のオブジェクトB_Oへの参照/ポインタであるオブジェクトA_Pを保持します。
さて、A_PがAによってGCされていない限り、B_OがBによってGCされたくありません。
ただし、A_PがAによってGC-edされたら(Aの他の何もB_Oを参照せず、Bの他の何もB_Oを参照しません)、B_Oが適格にGC-edされるようにします。
デストラクタを使用した言語でのソリューション
C ++では、これは簡単です-私はデストラクタを使用します。A_PがGC-edを取得すると、AはBにメッセージを送信してB_Oへの外部参照の数をデクリメントします。それが0で、B_0への内部参照も0の場合、B_OはGC-edを取得します。
Java / Clojureのソリューション?
今、私はJavaにデストラクタがないことを知っています。ただし、Clojureにこの問題を回避する方法があるかどうか疑問に思っています。
ありがとう!