我有一个终结者的课。但因为我总是打电话Dispose()
和Dispose()
打电话给GC.SupressFinalize(this)
,我认为我的对象从来没有真正进入最终化队列。终结者只是在那里作为支持,以防其他用户忘记拨打Dispose()
。终结者的性能惩罚如果从未叫
仅仅实现一个终结器,即使它从未被调用并且对象永远不会到达终止队列,是否有任何性能损失?
我以前并不认为,但在第102页的有效的C#:第二版由比尔瓦格纳,它说,“即使它从来没有被调用,终结者的存在确实会引入一个相当大的性能损失为您类型“。
即使带有Finalizer的对象很少,你也可能不会基于持有的引用GC对象的_lot_ ... – 2011-02-03 03:26:41