2011-02-25 120 views
11

Ruby的文檔有這樣的描述:ObjectSpace - 它是什麼以及人們如何使用它?

的對象空間模塊包含 數與 垃圾收集設施互動和 讓你遍歷所有生活 對象與迭代器例程。

對象空間還提供了 對象終結,特效,這將是 時調用特定的對象是大約 由垃圾回收銷燬支持。

任何人都可以用一種更簡單的語言解釋這一點,如果不是這樣,至少可以提供這方面的用途?

回答

6

A garbage collector是具有託管內存的語言的結構。這是管理內存的東西。從本質上講,垃圾收集器的工作是確定何時不再需要分配的內存並將其釋放。

當你使用語言,垃圾收集,還有您可能想要做某些事情:

  1. 運行每當一塊內存被釋放
  2. 計數的所有實例的方法類當前佔用內存
  3. 計數

對象空間給所有類的所有實例訪問做這個性質的東西。從本質上講,它是一種訪問任何東西以及當前正在使用分配內存的一切的方法。

6

例如,計算某個類的實例數:

class Examp 
    def self.obj_count 
    count = 0 
    ObjectSpace.each_object(self) do |b| 
     count += 1 
    end 

    return count 
    end 
end 

a = Examp.new 
b = Examp.new 
c = Examp.new 

puts Examp.obj_count #=> 3 

我知道類變量,位是使用的唯一的例子。每當你想對類的每個實例執行一些操作時,它都可能有用。

+0

嗨,謝謝你的回答。你是否也碰巧知道這個的任何實際用法? /好奇 – RubyKumar 2011-02-25 09:36:18

+1

http://37signals.com/svn/posts/2742-the-road-to-faster-tests – demas 2011-02-25 09:40:57

相關問題