Your version only works because the threads are dying after 2 seconds. 
Change

  def make_thread
    Thread.new { sleep 2 }
  end

to

  def make_thread
    Thread.new { sleep 10000 }
  end

and run it again.

The big arrays are happily garbage-collected; the Foos are not.
-- 
Posted via http://www.ruby-forum.com/.