【发布时间】:2008-10-14 14:32:22
【问题描述】:
我有一个设置,其中有两个 Cocoa 进程,与分布式对象 (DO) 通信。客户端正在使用垃圾收集,服务器没有。
似乎客户端挂在我直接引用它们之外的远处对象上。这意味着即使在我没有对对象的引用之后,它们也会被 NSDistantObjectTableEntry 拥有。显然它们不会在服务器上被释放。
只有当客户端退出时,它才会放开所有远处的对象。手动断开连接可能也可以,但我不想在客户端运行时这样做。
有没有办法告诉 GC'd DO 客户端放弃不再在本地引用的远程对象?
【问题讨论】:
-
客户端是应用程序还是命令行工具?
-
有趣的是,我今天发现了一个非常相似的问题,只是在我的情况下,双方都没有使用 GC(我将其关闭以确保它不是导致错误的原因)。查看我的问题 (stackoverflow.com/questions/2521514/…) 和我在此处发布的示例。就像你说的,手动断开连接是可行的,但这似乎不对。那么,DO 的工作方式是否存在我们从根本上遗漏的东西?
标签: cocoa macos garbage-collection distributed-objects