目次 | 前へ | 次へ | 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
メソッドは、参照セットがあらためて空になるたびに、何回も呼び出されます。リモートオブジェクトは、それに対する参照 (ローカル参照またはクライアントが保持している参照) がなくなったときに回収されます。