2010-01-12 8 views

답변

1

은 아마도 오브젝트 공간에서 주변에 파고

What is a ruby object? (introducing Memprof.dump) 도울 수 :

#!/usr/bin/ruby1.8 

include ObjectSpace 

def print_references_to_foos 
    for klass in [Bar, Baz] 
    each_object(klass) do |o| 
     s = o.inspect 
     puts s if s =~ /#<Foo/ 
    end 
    end 
end 

class Foo 
end 

class Bar 
    def initialize(foo) 
    @foo = foo 
    end 
end 

class Baz < Bar 
end 

foo1 = Foo.new 
foo2 = Foo.new 
foo3 = Foo.new 
bar1 = Bar.new(foo1) 
bar2 = Bar.new(foo1) 
bar3 = Baz.new(foo2) 

print_references_to_foos 
# => #<Baz:0xb7e09158 @foo=#<Foo:0xb7e091a8>> 
# => #<Bar:0xb7e0916c @foo=#<Foo:0xb7e091d0>> 
# => #<Bar:0xb7e09180 @foo=#<Foo:0xb7e091d0>> 
# => #<Baz:0xb7e09158 @foo=#<Foo:0xb7e091a8>> 
2

나는 상자 밖으로 작업을 수행하는 방법을 잘 모르겠지만, 아마 다음 포스트 당신을 도울 수 있습니다

관련 문제