我知道最佳实践是调用任何实现IDisposable的对象的Dispose方法,特别是包装有限资源(如文件句柄、套接字、GDI句柄等)的对象。
但我遇到了一个问题,我有一个带有Font的对象,如果我要让Font得到释放,我必须通过多个对象图层传递IDisposable,并检查很多用法。我在想这是否值得复杂度。
如果Font包装了HFONT,那就没什么关系了,因为GDI资源是系统全局的。但Font没有包装GDI句柄;它是GDI+,是一个完全独立的系统,并且据我所知,是进程局部的,不像GDI那样是系统全局的。而且,与Image不同,Font不会保留文件系统资源(至少我不知道)。
所以我的问题是:让Font被垃圾回收的真正成本是什么?
我知道我将承担终结器的一小部分开销,但如果“泄漏”的Font数量很少(比如半打),那么这个开销实际上是几乎不可察觉的。除了终结器之外,这似乎并没有什么不同于分配中等大小的数组并让GC清理它 - 它只是内存。
让Font被GC回收有我不知道的成本吗?