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)
Show files where this class is defined (1 file)
Register or log in to add new notes.