0

KiokuDB チュートリアルで言及されている弱参照とは正確には何 ですか?

それらは「通常の」参照とどう違うのですか?

4

1 に答える 1

6

通常の参照は、参照されているものがガベージコレクションされるのを防ぎます。弱参照は通常の参照に似ていますが、ガベージコレクションを妨げることはありません。エンティティへの最後の通常の参照が削除されると、ガベージコレクションが行われ、エンティティへの弱い参照はすべてになりundefます。

これは、循環参照がある場合に役立ちます。参照カウントガベージコレクター(Perlが使用するような)は、参照カウントが0になることはないため、循環参照を持つものを削除することはできません。

たとえば、親ノードが子ノードへの参照を持ち、子ノードが親への参照を持っているツリー構造について考えてみます。子から親への参照を弱くすることにより、ツリーへの外部参照がない場合、ツリーは自動的にガベージコレクションされます。

Perlでは、Scalar::Utilweaken関数を使用して弱参照を作成できます。 Mooseでは、属性をweak_refとしてマークすることもできます。

于 2010-10-25T18:45:35.703 に答える