<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無為

    無為則可為,無為則至深!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
    第 9 章   

    本章中的接口和類用于 RMI 的分布式垃圾收集器 (DGC)。 

    主題:  
    接口 DGC  
    Lease 類  
    ObjID 類  
    UID 類  
    VMID 類  
    9.1 接口 DGC  
    DGC 抽象用于分布式垃圾收集算法的服務器端。此接口包含兩種方法:dirty 和 
     clean。當遠程引用在客戶機(客戶機由 VMID 表示)端解編時,將調用 dirty 
    。當客戶機中不再存在對遠程引用的引用時,將進行相應的清理調用。失敗的 d 
    irty 調用必須預定一次 strong(強)clean 調用,以便保留調用順序號碼,從 
    而檢測以后由分布式垃圾收集器接收的無序調用。 

    對遠程對象的引用將被擁有該引用的客戶機租用 (leased) 一段時間。租用期從 
    接收到 dirty 調用時開始。客戶機必須在租用到期前在其所保存的遠程引用上再 
    次調用 dirty,以便進行續租。如果在到期之前不續租,則分布式垃圾收集器就 
    認為該客戶機不再引用遠程對象。 

    package java.rmi.dgc; 
    import java.rmi.server.ObjID; 

    public interface DGC extends java.rmi.Remote


        Lease dirty(ObjID[] ids, long sequenceNum, Lease lease) 
            throws java.rmi.RemoteException; 

        void clean(ObjID[] ids, long seqNum, VMID vmid, boolean strong) 
            throws java.rmi.RemoteException; 



    方法 dirty 請求租用與數組參數 ids 中所含對象標識符相關聯的遠程對象引用 
    。lease 包含客戶機唯一虛擬機標識符 (VMID) 和請求的租用期。垃圾收集器將 
    為每個本地虛擬機中導出的遠程對象保留一個 reference list(引用列表)--  
    保存引用的客戶機列表。如果準予租用,垃圾收集器將把客戶機 VMID 添加到 i 
    ds 中指示的每個遠程對象的引用列表中。sequenceNum 用來檢測和丟棄后期垃圾 
    收集器調用的順序號。每次調用垃圾收集器,順序號都將增大。 

    某些客戶機不能生成唯一的 VMID。這是因為只有當 VMID 包含 true(真)主機 
    地址時,才是通用的唯一標識符。由于安全性限制,某些客戶機將無法獲得該地 
    址。此種情況下,客戶機可以使用空 VMID。分布式垃圾收集器將為客戶機指派  
    VMID。 

    dirty 調用將返回 Lease 對象,其中包含遠程引用所用的 VMID 和準許的租用期 
    (服務器可以決定授予比客戶機請求短的租用期)。客戶機必須使用垃圾收集器 
    所用的 VMID,以便在客戶機釋放遠程對象引用時進行相應的 clean 調用。 

    客戶虛擬機僅需對每個虛擬機中引用的遠程引用進行一次初始 dirty 調用(即使 
    它對同一遠程對象進行多次引用)。此外,客戶機還必須在租用到期前調用 dir 
    ty 對遠程引用的租用進行續租。當客戶機對特定的遠程對象再無任何引用時,必 
    須為與該引用關聯的對象 ID 預定一次 clean 調用。 

    clean 調用將從 ids 指定的遠程對象的引用列表中刪除 vmid。順序號用來檢測 
    以后的清理操作。如果參數 strong 為真,則代表 clean 調用是一次失敗的 di 
    rty 調用的結果。此時應記住客戶機 vmid 的順序號。 

    9.2 Lease 類  
    租用包含一個唯一的虛擬機標識符和一個租用期。Lease 對象用來請求及準予對 
    遠程對象引用的租用。 

    package java.rmi.dgc; 

    public final class Lease implements java.io.Serializable


        public Lease(VMID id, long duration); 

        public VMID getVMID(); 

        public long getValue(); 



    Lease 構造函數創建帶有特定 VMID 和租用期的租用。VMID 可以為 null。 

    getVMID 方法返回與租用相關聯的客戶機 VMID。 

    getValue 方法返回租用期。 

    9.3 ObjID 類  
    類 ObjID 用來作為虛擬機中對遠程對象的唯一標識。每個標識符均包含一個對象 
    號和一個特定主機上的唯一地址空間標識符。對象標識符將在導出遠程對象時指 
    派給該對象。 

    ObjID 由對象號 (long) 和地址空間的唯一標識符 (UID) 組成。 

    package java.rmi.server; 

    public final class ObjID implements java.io.Serializable


        public ObjID (); 
        
        public ObjID (int num); 
        
        public void write(ObjectOutput out) throws java.io.IOException; 
        
        public static ObjID read(ObjectInput in) 
            throws java.io.IOException; 
        
        public int hashCode() 
        
        public boolean equals(Object obj) 
        
        public String toString() 



    ObjID 構造函數的第一種形式將生成唯一的對象標識符。第二個構造函數生成已 
    知的對象標識符(例如注冊服務程序和分布式垃圾收集器所用的標識符),并將 
    已知的對象號用作參數。第二個構造函數所生成的已知對象 ID 與缺省構造函數 
    所生成的對象 ID 不沖突;為強制實現這一點,ObjID 的對象號將被設置為構造 
    函數中提供的“已知”號,同時所有 UID 域均將設置為零。 

    方法 write 將對象 ID 的表示法編組到輸出流中。  

    方法 read 構造一個對象 ID,其內容將從指定的輸入流中讀取。 

    方法 hashCode 將對象號作為 hashcode 返回。 

    如果 obj 與 ObjID 內容相同,則 equals 方法返回 true。 

    toString 方法返回一個包含對象 ID 表示法的字符串。僅當對象 ID 來自非本地 
    地址空間時,地址空間標識符才將含在字符串表示法中。 

    .4 UID 類  
    UID 是一種抽象類,用來創建生成它的主機的唯一標識符。它將以地址空間標識 
    符的形式含在 ObjID 中。UID 由一個在主機上唯一的號碼 (int)、時間 (long) 
     和計數組成 (short)。 

    package java.rmi.server; 

    public final class UID implements java.io.Serializable


        public UID(); 

        public UID(short num); 

        public int hashCode(); 

        public boolean equals(Object obj); 

        public String toString(); 

        public void write(DataOutput out) throws java.io.IOException; 

        public static UID read(DataInput in) throws java.io.IOException; 



    構造函數的第一種形式將創建生成它的主機的唯一純標識符。此 UID 在以下條件 
    下具有唯一性:a) 計算機需要一秒以上的時間進行重新啟動,b) 計算機的時鐘 
    將永不向前調整。為了構造全局唯一的 UID,只需將 UID 與 InetAddress 分別 
    配對。 

    構造函數的第二種形式將創建一種已知的 UID。已知 ID 有 216 -1 種可能。這 
    種構造函數所生成的 ID 不會與缺省 UID 構造函數所生成的 ID 沖突。缺省構造 
    函數生成主機上真正唯一的標識符。 

    方法 hashCode、equals 和 toString 是為 UID 所定義的。如果兩個 UID 的內 
    容相同,則視為二者等價。 

    方法 write 將把 UID 寫入輸出流中。 

    方法 read 構造一個 UID,其內容將從指定輸入流中讀取。

    凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
    、轉載請注明來處和原文作者。非常感謝。

    posted on 2005-12-14 13:17 草兒 閱讀(113) 評論(0)  編輯  收藏 所屬分類: Java編程經驗談
    主站蜘蛛池模板: 亚洲综合久久精品无码色欲 | 亚洲性无码av在线| 免费观看一区二区三区| 国产av无码专区亚洲国产精品| 精品国产日韩亚洲一区在线| 成人免费无码大片A毛片抽搐 | 久久青草91免费观看| 亚洲日韩中文无码久久| a级毛片黄免费a级毛片| 亚洲av色福利天堂| 久久久久免费精品国产小说| 亚洲一卡2卡三卡4卡有限公司| 免费无遮挡无码永久视频| 亚洲国产精品线观看不卡| 大地资源二在线观看免费高清| 在线观看日本亚洲一区| 国产免费午夜a无码v视频| 日韩毛片一区视频免费| 亚洲色中文字幕无码AV| 免费国产黄网站在线观看| 亚洲视频欧洲视频| 嫩草影院免费观看| 日韩免费高清一级毛片| 亚洲中文久久精品无码ww16| 99视频在线看观免费| 亚洲xxxx视频| 亚洲狠狠爱综合影院婷婷| 久章草在线精品视频免费观看| 在线观看亚洲人成网站| 国产成人综合久久精品免费| 精品乱子伦一区二区三区高清免费播放| 亚洲AV无码一区二区乱子伦 | 免费国产午夜高清在线视频| 亚洲欧洲精品一区二区三区| 女人毛片a级大学毛片免费| 久久亚洲AV成人无码国产最大| 久久亚洲国产成人精品无码区| 99re免费99re在线视频手机版| 亚洲欧美日韩综合久久久| JLZZJLZZ亚洲乱熟无码| 亚洲一区二区三区免费视频|