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