Cocoa分布式对象,GC客户端,非GC服务器

时间:2008-10-14 14:32:22

标签: cocoa macos garbage-collection distributed-objects

我有一个设置,其中有两个Cocoa进程,与分布式对象(DO)进行通信。客户端正在使用垃圾收集,服务器不是。

似乎客户端挂在我直接引用它们之外的远处对象上。这意味着即使在我没有对象的引用之后,它们也会被NSDistantObjectTableEntry所拥有。显然他们没有在服务器上取消分配。

只有当客户端退出时,才会释放所有远程对象。手动断开连接可能也有效,但我不想在客户端运行时这样做。

有没有办法告诉GC'd DO客户端放弃那些本地没有引用的远程对象?

1 个答案:

答案 0 :(得分:1)

可能存在跨越客户端和服务器的保留周期 - 即客户端对象保留服务器对象的代理,而服务器对象又保留客户端对象的代理。

这是保留周期的一个非常简单的例子,当涉及两个以上的对象时,诊断会变得更加复杂。

有关其他与DO相关的问题,请参阅The Subtle Dangers Of Distributed Objects