Java(tm) Platform
Standard Edition 8
- サマリー:
- ネスト |
- フィールド |
- コンストラクタ |
- メソッド
- 詳細:
- フィールド |
- コンストラクタ |
- メソッド
-
- すべてのスーパー・インタフェース:
- Remote
public 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)
cleanメソッドは、idsで表される各リモート・オブジェクト内の参照リストからvmidを削除します。
|
Lease |
dirty(ObjID[] ids, long sequenceNum, Lease lease)
dirtyメソッドは、配列idsに含まれるオブジェクト識別子に関連したリモート・オブジェクト参照の貸出しを要求します。
|
-
-
メソッドの詳細
-
dirty
Lease dirty(ObjID[] ids,
long sequenceNum,
Lease lease)
throws RemoteException
dirtyメソッドは、配列idsに含まれるオブジェクト識別子に関連したリモート・オブジェクト参照の貸出しを要求します。leaseには、クライアントの一意のVM識別子(VMID)、および要求した貸出し期間が含まれます。ローカルVM内でエクスポートされた各リモート・オブジェクトごとに、ガベージ・コレクタは、参照リスト(オブジェクトへの参照を保持するクライアントのリスト)を用意します。貸出しが許可された場合は、ガベージ・コレクタはそのクライアントのVMIDを、ids内に示される各リモート・オブジェクトの参照リストに追加します。sequenceNumパラメータは、ガベージ・コレクタへの最後の呼出しを検出して破棄するための通し番号です。以降、ガベージ・コレクタへの呼出しのたびに、通し番号を増やしていく必要があります。VMIDはホスト・アドレスを含み、クライアントによってはセキュリティ上の制限からホスト・アドレスを取得できないため、VMIDを生成できないクライアントもあります。この場合、クライアントはnullのVMIDを使うことができます。分散ガベージ・コレクタは、そのようなクライアントにVMIDを割り当てます。dirtyメソッドは、使用するVMIDとそのリモート参照に許可された貸出し期間を含むLeaseオブジェクトを返します(サーバーは、クライアントの要求よりも短い貸し出し期間しか許可しないことがある)。クライアントがリモート・オブジェクト参照を破棄したときに、対応するcleanメソッドを呼び出すために、クライアントはガベージ・コレクタが使用するVMIDを使用しなければいけません。クライアントのVMは、VM内で参照される各リモート参照に対して、最初のdirtyメソッドだけを呼び出します(同じリモート・オブジェクトに対して複数の参照がある場合でも同様)。また貸出しを継続する場合には、クライアントは、貸出しが破棄される前にdirtyメソッドを呼び出す必要があります。特定のリモート・オブジェクトへの参照がなくなったら、クライアントは、その参照に関連したオブジェクトIDに対するcleanメソッドを呼び出す必要があります。
- パラメータ:
ids
- クライアントの呼出しで参照済みとしてマークするためのオブジェクトID
sequenceNum
- シーケンス番号
lease
- 要求した貸出し
- 戻り値:
- 許可した貸出し
- 例外:
RemoteException
- dirty呼出しが失敗した場合
-
clean
void clean(ObjID[] ids,
long sequenceNum,
VMID vmid,
boolean strong)
throws RemoteException
clean呼出しは、「ids」で表される各リモート・オブジェクトの参照リストから「vmid」を削除します。シーケンス番号は最後のclean呼出しを検出するために使用されます。引数strongがtrueの場合、cleanの呼出しは、失敗したdirty呼出しの結果として生じたものなので、このクライアントのvmidの通し番号を保存しておく必要があります。
- パラメータ:
ids
- クライアントの呼出しで未参照としてマークするためのオブジェクトID
sequenceNum
- シーケンス番号
vmid
- クライアントのVMID
strong
- 「strong」clean呼出しの作成
- 例外:
RemoteException
- clean呼出しに失敗した場合
Java(tm) Platform
Standard Edition 8
- サマリー:
- ネスト |
- フィールド |
- コンストラクタ |
- メソッド
- 詳細:
- フィールド |
- コンストラクタ |
- メソッド
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.