Java™ Platform
Standard Edition 7
- サマリー:
- ネスト |
- フィールド |
- コンストラクタ |
- メソッド
- 詳細:
- フィールド |
- コンストラクタ |
- メソッド
-
- すべてのスーパーインタフェース:
- 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
- クライアントの呼び出しで参照済みとしてマークするためのオブジェクト IDsequenceNum
- シーケンス番号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
- クライアントの呼び出しで未参照としてマークするためのオブジェクト IDsequenceNum
- シーケンス番号vmid
- クライアントの VMIDstrong
- 「strong」 clean 呼び出しの作成
- 例外:
RemoteException
- clean 呼び出しに失敗した場合
Java™ Platform
Standard Edition 7
- サマリー:
- ネスト |
- フィールド |
- コンストラクタ |
- メソッド
- 詳細:
- フィールド |
- コンストラクタ |
- メソッド
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.