目次|| 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, 2010, Oracle and/or its affiliates. All rights reserved.