WPF PresentationFontCache。这是什么?

WPF PresentationFontCache。这是什么?,wpf,caching,memory-leaks,fonts,presentation,Wpf,Caching,Memory Leaks,Fonts,Presentation,我用WPF开发了.NET3.5SP1 当我运行我的WPF应用程序时,我看到一个名为“PresentationFontCache”的进程出现在我的进程列表中(在任务管理器上)。该进程虽然看起来无害,但实际上即使在WPF应用程序关闭后仍驻留在内存中。这个过程实际上是什么?它有什么作用 因此,当我尝试检查内存使用情况(通过多次执行和关闭应用程序)时,这个过程会让人感觉有些内存仍在使用。此外,我还观察到,这个过程可能会变得非常消耗资源(在某些情况下,CPU使用率为30%,内存使用率为100 MB!!!)

我用WPF开发了.NET3.5SP1

当我运行我的WPF应用程序时,我看到一个名为“PresentationFontCache”的进程出现在我的进程列表中(在任务管理器上)。该进程虽然看起来无害,但实际上即使在WPF应用程序关闭后仍驻留在内存中。这个过程实际上是什么?它有什么作用

因此,当我尝试检查内存使用情况(通过多次执行和关闭应用程序)时,这个过程会让人感觉有些内存仍在使用。此外,我还观察到,这个过程可能会变得非常消耗资源(在某些情况下,CPU使用率为30%,内存使用率为100 MB!!!)

我找到了Windows服务,名为“Windows演示文稿字体缓存3.0.0.0”,它可能负责生成这个过程。该服务声称它通过缓存常用字体数据来优化WPF应用程序的性能。如果该服务尚未运行,WPF应用程序将启动该服务。它可以被禁用,但这样做会降低WPF应用程序的性能

但是为什么windows服务本身不在WPF应用程序关闭后关闭进程呢

或者,这项服务实际上会集体缓存用于任何WPF应用程序的字体信息,以便下次任何类似应用程序重新运行时,都会使用缓存,而不会重新生成应用程序的字体?如果是这样,那不是一种不能被垃圾收集的数据类型吗?这不是导致内存泄漏的可能原因吗

请把灯给我

Thx
Vinit。

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

有一些单独的实例表明,这项服务会导致问题,但对于它所做的工作,我认为偶尔出现的CPU峰值和100mb内存使用量并不是问题

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