模块  java.rmi
软件包  java.rmi.dgc

Interface DGC

  • All Superinterfaces:
    Remote

    public interface DGCextends Remote
    DGC抽象用于分布式垃圾收集算法的服务器端。 此接口包含两个方法:脏和干净。 当远程引用在客户端中解组时(客户端由其VMID指示),将进行脏调用。 当客户端中不再存在对远程引用的引用时,将进行相应的清除调用。 失败的脏呼叫必须安排强干净呼叫,以便可以保留呼叫的序列号,以便检测分布式垃圾收集器无序接收的未来呼叫。 对持有引用的客户端租用对远程对象的引用一段时间。 租用期从收到脏话时开始。 在此类租约到期之前,客户有责任通过额外的脏调用来更新租约。 如果客户端在到期之前未续订租约,则分布式垃圾收集器会假定该客户端不再引用该远程对象。
    • 方法摘要

      所有方法  实例方法 抽象方法 
      变量和类型 方法 描述
      void clean​(ObjID[] ids, long sequenceNum, VMID vmid, boolean strong)
      clean调用从'id'中指示的每个远程对象的引用列表中删除'vmid'。
      Lease dirty​(ObjID[] ids, long sequenceNum, Lease lease)
      脏调用请求与数组'ids'中包含的对象标识符关联的远程对象引用的租约。
    • 方法详细信息

      • dirty

        Lease dirty​(ObjID[] ids,            long sequenceNum,            Lease lease)     throws RemoteException
        脏调用请求与数组'ids'中包含的对象标识符关联的远程对象引用的租约。 'lease'包含客户端的唯一VM标识符(VMID)和请求的租约期。 对于在本地VM中导出的每个远程对象,垃圾收集器维护一个引用列表 - 一个包含对它的引用的客户端列表。 如果授予租约,则垃圾收集器将客户端的VMID添加到“ID”中指示的每个远程对象的引用列表中。 'sequenceNum'参数是一个序列号,用于检测和丢弃对垃圾收集器的延迟调用。 对于每次后续对垃圾收集器的调用,序列号应该总是增加。 某些客户端无法生成VMID,因为VMID是一个通用唯一标识符,其中包含某些客户端由于安全限制而无法获取的主机地址。 在这种情况下,客户端可以使用null的VMID,分布式垃圾收集器将为客户端分配VMID。 脏调用返回一个Lease对象,该对象包含使用的VMID和为远程引用授予的租用期(服务器可能决定授予比客户端请求更短的租用期)。 客户端必须使用垃圾收集器使用的VMID,以便在客户端删除远程对象引用时进行相应的干净调用。 客户端VM只需要为VM中引用的每个远程引用进行一次初始脏调用(即使它对同一远程对象有多个引用)。 在此类租约到期之前,客户还必须进行脏话以续订远程引用的租约。 当客户端不再具有对特定远程对象的任何引用时,它必须为与引用关联的对象ID安排一个干净的调用。
        参数
        ids - 要标记为调用客户端引用的对象的ID
        sequenceNum - 序列号
        lease - 要求的租约
        结果
        授予租约
        异常
        RemoteException - 如果脏调用失败
      • clean

        void clean​(ObjID[] ids,           long sequenceNum,           VMID vmid,           boolean strong)    throws RemoteException
        clean调用从'id'中指示的每个远程对象的引用列表中删除'vmid'。 序列号用于检测后期清除呼叫。 如果参数'strong'为真,则clean调用是脏调用失败的结果,因此需要记住客户端'vmid'的序列号。
        参数
        ids - 通过调用客户端标记为未引用的对象的ID
        sequenceNum - 序列号
        vmid - 客户端VMID
        strong - 让'强'干净的电话
        异常
        RemoteException - 如果干净呼叫失败