问题陈述
我有两台机器 A 和 B,它们都运行 Clojure。
B有一些内存数据结构。
A 持有一个对象 A_P,它是 B 内存中某个对象 B_O 的引用/指针。
现在,只要 A_P 没有被 A GC-ed,我不希望 B_O 被 B GC-ed。
但是,一旦 A_P 已被 A GC-ed(并且 A 中的其他任何内容都没有引用 B_O,B 中的其他任何内容都没有引用 B_O),那么我希望 B_O 可以被 GC-ed。
带有析构函数的语言解决方案
在 C++ 中,这很容易——我使用析构函数。当 A_P 被 GC-ed 时,A 向 B 发送一个 msg 以减少对 B_O 的外部引用的数量,当它为 0 并且对 B_0 的内部引用也为 0 时,B_O 被 GC-ed。
Java/Clojure 中的解决方案?
现在,我知道 Java 没有析构函数。但是,我想知道 Clojure 是否有办法解决这个问题。
谢谢!