目次 | 前 の項目 | 次の項目 Java Remote Method Invocation


5.4 Unreferenced インタフェース

package java.rmi.server;

public interface Unreferenced {
public void unreferenced();
}


java.rmi.server.Unreferenced インタフェースを使うと、サーバオブジェクトが、自身に対するリモート参照を持っているクライアントがないという通知を受けることができます。分散ガベー ジコレクション機構は、各リモートオブジェクトについて、そのリモートオブジェクトを参照しているクライアント仮想マシン群を保持しています。あるクライ アントがあるリモートオブジェクトに対するリモート参照を持っている間は、RMI ランタイムもそのリモートオブジェクトへのローカル参照を保持し続けます。リモートオブジェクトの「参照」のセットが空になるたびに (つまり、そのオブジェクトを参照するクライアントの数が 0 になると)、リモートオブジェクトが Unreferenced インタフェースを実装していれば、Unreferenced.unreferenced メソッドが呼び出されます。リモートオブジェクトが Unreferenced インタフェースをサポートするのは必須ではありません。

リモートオブジェクトに対するローカル参照が存在している間は、それをリモート呼び出しで渡すこともできますし、クライアントへの戻り値にもなります。参 照を受け取ったプロセスは、そのリモートオブジェクトに対するセットに追加されます。参照セットが空になったとき、そのリモートオブジェクトの unreferenced メソッドが呼び出されます。このため、unreferenced メソッドは、参照セットが改めて空になるたびに、何回も呼び出されます。リモートオブジェクトは、それに対する参照 (ローカル参照またはクライアントが保持している参照) がなくなったときに回収されます。



目次 | 前の項目 | 次の項目
Copyright © 1997-2004 Sun Microsystems, Inc. All Rights Reserved.