我有一個終結者的課。但因爲我總是打電話Dispose()
和Dispose()
打電話給GC.SupressFinalize(this)
,我認爲我的對象從來沒有真正進入最終化隊列。終結者只是在那裏作爲支持,以防其他用戶忘記撥打Dispose()
。終結者的性能懲罰如果從未叫
僅僅實現一個終結器,即使它從未被調用並且對象永遠不會到達終止隊列,是否有任何性能損失?
我以前並不認爲,但在第102頁的有效的C#:第二版由比爾瓦格納,它說,「即使它從來沒有被調用,終結者的存在確實會引入一個相當大的性能損失爲您類型「。
即使帶有Finalizer的對象很少,你也可能不會基於持有的引用GC對象的_lot_ ... – 2011-02-03 03:26:41