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