我有在 WPF 中完成开发的 .Net 3.5 SP1。
当我运行我的 WPF 应用程序时,我看到一个名为“PresentationFontCache”的进程出现在我的进程列表中(在任务管理器上)。该进程虽然看似无害,但实际上即使在 WPF 应用程序关闭后仍驻留在内存中。这个过程实际上是什么?它有什么作用?
因此,当我尝试检查内存使用情况(通过多次执行和关闭应用程序)时,该过程给人的感觉是一些内存仍在使用中。我还观察到,这个过程可能会非常消耗资源(在某些条件下,30% 的 CPU 使用率和/或 100 MB 的内存使用率!!!)。
我找到了名为“Windows Presentation Foundation Font Cache 3.0.0.0”的 Windows 服务,它可能负责生成此进程。该服务声称它通过缓存常用字体数据来优化 WPF 应用程序的性能。如果该服务尚未运行,WPF 应用程序将启动该服务。可以禁用它,但这样做会降低 WPF 应用程序的性能。
但是为什么在WPF应用程序关闭后Windows服务本身不关闭进程。
还是该服务实际上集体缓存了用于任何 WPF 应用程序的字体信息,以便下次重新运行任何类似应用程序时,将使用缓存而不为应用程序重新生成字体?如果是这样,那不是一种不能被垃圾收集的数据吗?这不是导致内存泄漏的可能原因吗?
请点亮我。
谢谢维尼特。