From: ara.t.howard@... Date: 2006-10-27T05:14:46+09:00 Subject: Re: debugging memory use and GC On Fri, 27 Oct 2006, Rick DeNatale wrote: > Not sure, what I was suggesting was that the real goal is to somehow root > out the reference path or path which is keeping an object from being > reclaimed without making additional references. right. i was thinking of something like this: harp:~ > cat a.rb def really_stupid_reference_finder obj begin class << obj def _dump(*_) throw 'referer', true end end rescue TypeError nil end ObjectSpace.each_object do |candidate| next if candidate == obj referer = catch 'referer' do begin Marshal.dump candidate rescue TypeError false end false end return candidate if referer end return nil ensure GC.start end a = [b = '42'] referer = really_stupid_reference_finder b p referer p referer == a referer = really_stupid_reference_finder [ 'new_array' ] p referer p referer == a harp:~ > ruby a.rb ["42"] true nil false -a -- my religion is very simple. my religion is kindness. -- the dalai lama