1

我有在 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 应用程序的字体信息,以便下次重新运行任何类似应用程序时,将使用缓存而不为应用程序重新生成字体?如果是这样,那不是一种不能被垃圾收集的数据吗?这不是导致内存泄漏的可能原因吗?

请点亮我。

谢谢维尼特。

4

1 回答 1

2

该服务旨在提高 WPF 应用程序的性能并增加 WPF 程序(或同一程序的不同实例)之间的共享资源量。它的源代码作为参考源代码中心的一部分提供,有关 WPF 应用程序性能的更多信息可以在此处找到。

有一些孤立的实例表明此服务会导致问题,但对于它正在做的事情,我不认为偶尔的 CPU 峰值和 100mb 内存使用是有问题的。

如果您认为该服务占用了太多资源,您可以安全地禁用该服务,但您最好分析/测量它对您的应用程序的影响。

于 2010-05-05T11:40:33.853 回答