2010-11-23 43 views
93

面試官今天問我這個問題......有答案嗎?如何強制垃圾收集器運行?

+3

這個問題有很好的信息,你爲什麼不應該這樣做:http://stackoverflow.com/questions/118633/ whats-so-wrong-about-using-gc-collect – 2010-11-23 15:06:06

+1

你爲什麼這樣講這個問題 – 2010-11-23 15:06:46

+0

How部分比Why(not)更不重要。 – 2010-11-23 15:08:56

回答

121

System.GC.Collect()力垃圾收集器運行。這是不推薦的,但可以在情況出現時使用。

12
GC.Collect() 

MDSN

使用此方法來嘗試回收所有 內存,無法訪問。

無論 它們在內存中多長時間,所有的對象都被考慮用於收集 ;但是, 未收集在管理的 代碼中引用的對象。使用此 方法強制系統嘗試 回收可用內存的最大數量。

9

GC.Collect();

請記住,雖然,垃圾收集器可能不經常清理你的期望......

142

不建議顯式調用GC,但如果你調用

GC.Collect(); 
GC.WaitForPendingFinalizers(); 

它會在整個代碼中明確調用GC,不要忘記在GC.Collect()之後調用GC.WaitForPendingFinalizers();

6

你不想強制垃圾收集器運行。

但是,如果你做過(作爲一個純粹的學術活動,當然):

GC.Collect() 
1

我認爲.Net框架會自動執行此操作,但以防萬一。 首先,請務必選擇要刪除的東西,然後調用垃圾收集器:

randomClass object1 = new randomClass 
... 
... 
// Give a null value to the code you want to delete 
object1 = null; 
// Then call the garbage collector to erase what you gave the null value 
GC.Collect(); 

我想這就是它。希望我幫助別人。

0
GC.Collect(); 

我們通過垃圾回收器的收集方法調用垃圾回收器。大多是沒有必要調用垃圾回收器,因爲它是由不同的線程在後臺進程中連續運行的