Class

WeakRef

Inheritance
< Delegator < Object

WeakRef is a class to represent a reference to an object that is not seen by the tracing phase of the garbage collector. This allows the referenced object to be garbage collected as if nothing is referring to it. Because WeakRef delegates method calls to the referenced object, it may be used in place of that object, i.e. it is of the same duck type.

Usage:

  foo = Object.new
  foo = Object.new
  p foo.to_s                  # original's class
  foo = WeakRef.new(foo)
  p foo.to_s                  # should be same class
  ObjectSpace.garbage_collect
  p foo.to_s                  # should raise exception (recycled)

Classes & Modules

Methods

Class

Visibility Signature
public new (orig)

Instance

Visibility Signature
public __getobj__ ()
public __setobj__ (obj)
public weakref_alive? ()

Class Method Detail

new(orig)

Create a new WeakRef from orig.

Instance Method Detail

__getobj__()

Return the object this WeakRef references. Raises RefError if the object has been garbage collected. The object returned is the object to which method calls are delegated (see Delegator).

__setobj__(obj)

weakref_alive?()

Returns true if the referenced object still exists, and false if it has been garbage collected.