module contains a number of routines that
interact with the garbage collection facility and allow you to
traverse all living objects with an iterator.
also provides support for object
finalizers, procs that will be called when a specific object is
about to be destroyed by garbage collection.
|
class methods
|
|
_id2ref
|
ObjectSpace._id2ref( anId )
-> anObject
|
|
Converts an object id to a reference to the object.
May not be
called on an object id passed as a parameter to a finalizer.
s = "I am a string"
|
� |
"I am a string"
|
r = ObjectSpace._id2ref(s.id)
|
� |
"I am a string"
|
r == s
|
� |
true
|
|
|
define_finalizer
|
ObjectSpace.define_finalizer(
anObject, aProc=proc()
)
|
|
Adds aProc as a finalizer, to be called when anObject
is about to be destroyed.
|
|
each_object
|
ObjectSpace.each_object( [
aClassOrMod
] )
{| anObj | block }
-> aFixnum
|
|
Calls the block once for each living, nonimmediate
object in this Ruby process.
If aClassOrMod is specified, calls the block for only those
classes or modules that match (or are a subclass of)
aClassOrMod.
Returns the number of objects found.
a = 102.7
b = 95
ObjectSpace.each_object(Numeric) {|x| p x }
print "Total count: ", ObjectSpace.each_object {} ,"\n"
|
produces:
102.7
2.718281828
3.141592654
Total count: 372
|
|
|
garbage_collect
|
ObjectSpace.garbage_collect
-> nil
|
|
Initiates garbage collection (see module GC on page 410).
|
|
undefine_finalizer
|
ObjectSpace.undefine_finalizer(
anObject )
|
|
Removes all finalizers for anObject.
|