| 目次 | 前の項目 | 次の項目 | Java Remote Method Invocation |
package java.rmi.server;
public interface Unreferenced {
public void unreferenced();
}
java.rmi.server.Unreferenced インタフェースを使うと、サーバオブジェクトが、それに対するリモート参照を持っているクライアントがないという通知を受けることができます。分散ガベージコレクション機構は、各リモートオブジェクトについて、そのリモートオブジェクトを参照しているクライアント Virtual Machine のセットを保持しています。あるクライアントがあるリモートオブジェクトに対するリモート参照を持っている間は、RMI ランタイムもそのリモートオブジェクトへのローカル参照を保持し続けます。「参照」のセットが空になると、(サーバがUnreferenced.unreferencedインタフェースを実装していれば) Unreferenced メソッドが呼び出されます。リモートオブジェクトが Unreferenced インタフェースをサポートするのは必須ではありません。リモートオブジェクトに対するローカル参照が存在している間は、それをリモート呼び出しで渡すこともできますし、クライアントへの戻り値にもなります。参照を受け取ったプロセスは、そのリモートオブジェクトに対するセットに追加されます。参照セットが空になったとき、そのリモートオブジェクトの
Unreferencedメソッドが呼び出されます。このため、Unreferencedメソッドは、参照セットが改めて空になるたびに、何回も呼び出されます。リモートオブジェクトは、それに対する参照 (ローカル参照またはクライアントが保持している参照) がなくなったときに回収されます。