|
Java プラットフォーム 1.2
|
前のクラス
次のクラス |
フレームあり
フレームなし |
概要: 内部クラス | フィールド | コンストラクタ | メソッド |
詳細: フィールド | コンストラクタ | メソッド |
java.rmi.dgc
インタフェース DGC
- public abstract interface DGC
- extends Remote
DGC インタフェースは、分散ガベージコレクションアルゴリズムのサーバ側に使用されるものです。このインタフェースには dirty と clean の 2 つのメソッドがあります。dirty メソッドは、リモート参照がクライアント内で逆整列化操作がされたときに呼び出されます (クライアントは VMID で表わされる)。これに対応する clean メソッドは、そのリモート参照への参照がクライアント内になくなったときに呼び出されます。dirty メソッドが失敗した場合には、strong を true に指定した clean メソッドを呼び出して、その呼び出しの通し番号を保持しなければなりません。このようにすれば、以降に分散ガベージコレクタから誤った呼び出しを受け取ったときにそれを検出することができます。
リモートオブジェクトへの参照は、その参照を保持するクライアントから一定の期間だけ貸し出されます。貸し出し期間は、dirty 呼び出しを受け取ったときから始まります。貸し出しが破棄される前に、クライアントが持つリモート参照に対して追加の dirty メソッドを呼び出し、貸し出しを更新するのはクライアントの責任です。クライアントが貸し出しを破棄する前に更新しなければ、分散ガベージコレクタは、そのリモートオブジェクトはもうクライアントから参照されないものと見なします。
メソッドの概要 |
void |
clean(ObjID[] ids,
long sequenceNum,
VMID vmid,
boolean strong)
ids で表される各リモートオブジェクト内の参照リストから vmid を削除します。 |
Lease |
dirty(ObjID[] ids,
long sequenceNum,
Lease lease)
配列 ids に含まれるオブジェクト識別子に関連付けられた、リモートオブジェクト参照の貸し出しを要求します。 |
dirty
public Lease dirty(ObjID[] ids,
long sequenceNum,
Lease lease)
throws RemoteException
- 配列 ids に含まれるオブジェクト識別子に関連付けられた、リモートオブジェクト参照の貸し出しを要求します。lease には、クライアントの一意の VM 識別子 (VMID)、および要求した貸し出し期間が含まれます。ローカル VM 内でエクスポートされた各リモートオブジェクトごとに、ガベージコレクタは、参照リスト (オブジェクトへの参照を保持するクライアントのリスト) を用意します。貸し出しが許可された場合は、ガベージコレクタはそのクライアントの VMID を、ids 内に示される各リモートオブジェクトの参照リストに追加します。sequenceNum パラメータは、ガベージコレクタへの後の呼び出しを検出して破棄するための通し番号です。以降、ガベージコレクタへの呼び出しのたびに、通し番号を増やしていく必要があります。
VMID はホストアドレスを含み、クライアントによってはセキュリティ上の制限からホストアドレスを取得できないため、VMID を生成できないクライアントもあります。この場合、クライアントは null の VMID を使うことができます。分散ガベージコレクタは、そのようなクライアントに VMID を割り当てます。
dirty メソッドは、使用する VMID とそのリモート参照に許可された貸し出し期間を含む Lease オブジェクトを返します (サーバは、クライアントの要求よりも短い貸し出し期間しか許可しないことがある)。クライアントがリモートオブジェクト参照を破棄したときに、対応する clean メソッドを呼び出すために、クライアントはガベージコレクタが使用する VMID を使用しなければなりません。
クライアントの VM は、VM 内で参照される各リモート参照に対して、最初の dirty メソッドだけを呼び出します (同じリモートオブジェクトに対して複数の参照がある場合でも同様)。また貸し出しを継続する場合には、クライアントは、貸し出しが破棄される前に dirty メソッドを呼び出す必要があります。特定のリモートオブジェクトへの参照がなくなったら、クライアントは、参照が関連付けられているオブジェクト ID に対する clean メソッドを呼び出す必要があります。
clean
public void clean(ObjID[] ids,
long sequenceNum,
VMID vmid,
boolean strong)
throws RemoteException
- ids で表される各リモートオブジェクト内の参照リストから vmid を削除します。通し番号を使用して、後の clean 呼び出しを検出します。引数 strong が true の場合、clean の呼び出しは、失敗した dirty 呼び出しの結果として生じたものなので、このクライアントの vmid の通し番号を保存しておく必要があります。
|
Java プラットフォーム 1.2
|
前のクラス
次のクラス |
フレームあり
フレームなし |
概要: 内部クラス | フィールド | コンストラクタ | メソッド |
詳細: フィールド | コンストラクタ | メソッド |
バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.