Issue #6614 has been updated by funny_falcon (Yura Sokolov). It seems that ObjectSpace.define_finalizer is complitely broken with Ruby 1.9.3 And even in Ruby 1.8.7 finalizer proc ought to be created in other scope to not hold reference to object in its binding. See #6664 and https://gist.github.com/3009867 for more ---------------------------------------- Bug #6614: GC doesn't collect objects bound to (collectable) proc https://bugs.ruby-lang.org/issues/6614#change-27545 Author: rogerdpack (Roger Pack) Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: tcs-ruby 1.9.3p28 (2012-01-28, TCS patched 2012-01-30) [i386-mingw32] Hello all. Previously discussed here: http://www.ruby-forum.com/topic/4402823 I would expect the following code to eventually run the finalizers mentioned: def finalized_puts bad ObjectSpace.define_finalizer(bad) { print 'collector run', bad } end loop { finalized_puts [] } This works in jruby as expected, but not in MRI. This has the unfortunate side effect of making define_finalizer *very* difficult to actually use right http://www.mikeperham.com/2010/02/24/the-trouble-with-ruby-finalizers/ Cheers! -- http://bugs.ruby-lang.org/