type=class
superclass=Object
included=
extended=
dynamically_included=
dynamically_extended=
library=drb
aliases=DRbIdConv
aliasof=

オブジェクトと識別子を相互に変換するクラスです。

リモートオブジェクトは、URIと識別子で区別されます。
リモートメソッド呼び出しは、リモートプロセスに識別子を
送り、それを受け取ったプロセスでオブジェクトに変換することで実現されます。

このクラスはdRubyでデフォルトとして使われる
のオブジェクト-識別子間の変換クラスです。
この変換には [[c:ObjectSpace]] の機構が使われます。特に
[[m:ObjectSpace.#_id2ref]] が使われています。
これはリモートオブジェクト
が有効なのはリモートプロセス内の対応オブジェクトが GC で回収されるまで
であることを意味します。一方 GC アルゴリズムでのオブジェクトの到達性
判定はローカルプロセス内でのみ行なわれる、という事実に注意する必要があります。
これはリモートプロセスで参照されているオブジェクトがローカルプロセス内では
参照が切れてしまい、GC されてしまう可能性があるということを意味します。
つまりリモートに送るオブジェクトは適切にローカルからも参照を保持する必要がある
ということを意味します。一方リモート側から参照されなくなった場合には
ローカル側できちんと GC されるためには、ローカル側で適切に参照を切る
必要もあります。


別の仕組みとして、[[lib:drb/timeridconv]] で提供されている
[[c:DRb::TimerIdConv]] クラスがあります。これを使うと、リモートに
オブジェクトの参照が送られてから一定時間の間は、ローカルプロセス側
の DRb::TimerIdConv で参照を保持しておくので、参照管理の
簡略化ができます。
