>>>>> "C" == Chris Pine <nemo / hellotree.com> writes: C> class Foo; end pigeon% cat b.rb #!/usr/bin/ruby def getAllClasses classes = [] ObjectSpace.each_object (Module) do |klass| classes << klass.inspect end classes end originalClasses = getAllClasses class Object class Foo; end end Object.module_eval { remove_const 'Foo' } GC.start deletedClasses = [] ObjectSpace.each_object (Module) do |klass| deletedClasses << klass if(!originalClasses.include?(klass.inspect)) end foo = deletedClasses[0].new p foo pigeon% pigeon% b.rb ./b.rb:24: undefined method `new' for nil (NameError) pigeon% C> you'll get a NoMethodError, since the class is deleted. This proves that my C> code isn't holding a reference to the class. This prove nothing. Guy Decoux