.net - 设置字体真的有多重要?

标签 .net fonts garbage-collection gdi+ finalizer

我知道最佳实践是在实现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/

相关文章:

C# 在知道字体名称时获取字体系列

java - JDK11 中的 ZGC 名称中的字母 "Z"到底指的是什么?

c# - 枚举扩展生成垃圾

asp.net - 安装 Asp.Net SignalR 安装时出错

c# - 在 Dispose 方法中关闭数据库连接是否正确?

c# - 如果 .NET SqlConnection 在 `using` 语句内引发异常,我是否需要手动关闭它?

css - 哪些网站提供公共(public)网络字体库链接?

css - 为什么我的 h1 很局促?

java - 原型(prototype) Bean 销毁

c# - WPF DispatcherTimer 和鼠标按钮单击计时