Понятия не имею, каков ответ, но не могли бы вы узнать экспериментально? Взгляните на кирку . Я уверен, что это очень наивный тест, и кто-то может сделать лучше, но вы поняли:
puts "program start"
include ObjectSpace
class SfbdTest
def initialize(a)
@a = a
end
end
define_finalizer(SfbdTest, proc{|id| puts "GC on class"} )
puts "creating instance"
x = SfbdTest.new(1)
define_finalizer(x, proc{|id| puts "GC on instance"} )
puts "zombie-ing instance"
x = nil
puts "forcing GC"
GC.start()
puts "program end"
Производит:
sfbd@thing:~$ ruby -w test.rb
program start
creating instance
zombie-ing instance
forcing GC
program end
GC on instance
GC on class
sfbd@thing:~$
Похоже, что нужен поток, но, к сожалению, я должен работать, извините ...