Hi! > Probably you are seeing c6 remaining because you were playing with > your code like so: Not really, let me paste the full code here: ------------------------------------------------------------------------------- class CustomObject attr_accessor :val, :next def initialize(v,n=nil) @val = v @next = n end def to_s "Object #{@val} (#{self.object_id}) points to #{@next.nil? ? 'nothing' : @next.val} (#{@next.nil? ? '':@next.object_id})" end end def list print "Listing all the CustomObject's with ObjectSpace\n" print "#{ObjectSpace.each_object(CustomObject) {|v| puts v}} objects found\n\n" end def test c1 = CustomObject.new("1",CustomObject.new("2",CustomObject.new("3"))) c4 = CustomObject.new("4",CustomObject.new("5")) c6 = CustomObject.new("6") c1.next.next.next = c1 list c1 = nil c4.next = nil end test GC.start sleep(1) list ------------------------------------------------------------------------------- running ------------------------------------------------------------------------------- Listing all the CustomObject's with ObjectSpace Object 6 (-604875086) points to nothing () Object 4 (-604875066) points to 5 (-604875056) Object 5 (-604875056) points to nothing () Object 1 (-604875026) points to 2 (-604875016) Object 2 (-604875016) points to 3 (-604875006) Object 3 (-604875006) points to 1 (-604875026) 6 objects found Listing all the CustomObject's with ObjectSpace Object 6 (-604875086) points to nothing () 1 objects found ------------------------------------------------------------------------------- > Funny, I couldn't reproduce what you are seeing. > Nothing remains. Maybe a situation like this: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/142834 But the main point of this question you solved: the begin ... end works perfectly. Thanks! ---------------------------- EustáÒuio "TaQ" Rangel eustaquiorangel / yahoo.com http://beam.to/taq UsuáÓio GNU/Linux no. 224050