2012-02-27 39 views
-5

可能重複:
difference between destructor and garbage collector垃圾收集和析構函數

最近我問這個question,現在按照我得出的結論的答案,那

好吧,讓我們我檢查是否得到了這個概念,GC是用來檢查是否需要處理對象,如果有的話會調用析構函數,GC不能破壞它另一方面,析構函數會在類的末尾銷燬對象,而析構函數不能檢查內存問題,它最終會破壞所有的東西。我對嗎?

我評論有,但沒有得到答覆,所以我想在這裏發佈新問題。任何人都可以回覆,我的結論是正確的

+4

您已添加評論* 9分鐘前*。請更耐心。 – 2012-02-27 10:38:17

回答

1

不,析構函數(〜myClass)只是在你不再需要對象時要做的事情,比如釋放資源(文件,連接...)。 它與構造函數(myClass)相反,您在其中設置對象(獲取連接等)。 當GC超出範圍或析構函數被調用(我認爲)時,GC刪除所有指向myClass對象的指針。所以你的對象之前在內存中的位置可以再次分配。

+0

令人驚訝的是,GC不知道任何*關於大多數超出範圍的物體*。相反,它的主要工作方式是將任何可以找到的引用存在的所有內容複製到新的內存區域,然後聲明以前用於保存剛剛收集的代的對象的所有內存都可供重用。有一些像WeakReference,監視器鎖定,固定對象,註冊終結器等角落的情況,但大多數情況下,垃圾收集器既不知道也不關心有多少廢棄對象存在。 – supercat 2012-03-02 00:00:22