我知道最佳实践是在实现IDisposable的任何对象上调用Dispose,尤其是包装有限资源(例如文件句柄,套接字,GDI句柄等)的对象。
但是我遇到了这样的情况:我有一个带有Font的对象,并且我必须通过几层对象来遍历IDisposable,并检查很多用法,以确保我总是可以丢弃Font。我想知道它是否值得复杂化。
如果Font封装了HFONT,那将是一回事,因为GDI资源是系统全局的。但是Font并没有包装GDI句柄。它是GDI +,它是一个完全独立的系统,据我了解,它是本地过程的,而不是像GDI这样的系统全局的。与Image不同,Font永远不会占用文件系统资源(无论如何我都知道)。
所以我的问题是:让字体收集垃圾的真正成本是多少?
我知道我对终结器的影响不大,但是如果“泄漏的”字体的数量很少(比如说六打),那么说实话就不会那么明显了。除了终结器之外,这与分配中等大小的数组并让GC对其进行清理似乎没有什么不同-只是内存。
我是否不知道让字体获得GC的费用?
最佳答案
简单的答案:如果只是几个,那就没有。如果很多,那就可以。如果您的应用程序已经在向垃圾收集器施加压力,则可以。我将使用perfmon来查看周围坐着的对象的数量,并将其提升到更高的世代,然后再决定。
关于.net - 设置字体真的有多重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752344/