代码之家  ›  专栏  ›  技术社区  ›  Simon Nickerson

我什么时候应该调用naming.unbind()?

  •  0
  • Simon Nickerson  · 技术社区  · 16 年前

    我有一些代码是通过RMI提供的。

    如果我的程序异常终止,我将不会调用naming.unbind(),并且对对象的引用可能会挂在RMI注册表中,随后对同名的naming.bind()的调用将失败。

    如何确保清除恶意引用?

    1 回复  |  直到 16 年前
        1
  •  -1
  •   community wiki ddimitrov    16 年前

    有一种叫做分布式垃圾收集器(DGC)。它使用租约跟踪过时的绑定,并在不使用时收集它们。设置 leaseValue 用于确定绑定何时过期的导出JVM的系统属性。

    将该值设置得过低将导致网络流量增加。将其设置得太高将导致过时的引用被保留得太长。您可以在客户端查找后调用等幂方法,以确保对象是活动的(或使用类似WebLogic智能存根的东西)。在服务器端,您可以检查注册表,如果存在绑定,可以注销它(以防它过时),释放远程对象并导出一个新对象,或者只保留它(如果它是活动的)。