我是developing一个分布式系统,它必须维护一个分布式对象图,其中对象可以指向其他对象,其中一些对象可能位于远程计算机上。还必须能够将对象从一台计算机移动到另一台计算机。
这引发了两个相关的问题:
最初的想法是维护所有入站引用的详尽列表。
当然,仅此一项对于垃圾收集来说还不够,因为它不会捕获循环引用(与引用计数垃圾收集相同的问题)。
但是,此列表可用于确保在移动对象时可以通知任何带有对象引用的远程计算机。
另一个想法是,如果一个对象被移动,它会在其原始计算机上留下“breadcrumb”。如果计算机收到针对不再存在的对象的消息,则可以将其转发到新位置。
然而,无限期地保留这些引用是不可扩展的,我们如何知道删除它们的安全性?
任何人都可以提供指向此问题的现有解决方案的指针,特别是那些处理复制和并发问题的解决方案吗?
答案 0 :(得分:0)
Java中最着名的解决方案是作为RMI规范的一部分实现的。
见Garbage Collection of Remote Objects& Distributed Garbage Collection