2010-05-05 45 views
1

我有.net 3.5 SP1在WPF開發完成。WPF PresentationFontCache。這是什麼?

當我運行我的WPF應用程序時,我看到名爲「PresentationFontCache」的進程出現在我的進程列表中(任務管理器上)。即使在WPF應用程序關閉之後,該進程雖然看起來無害,但實際上卻駐留在內存中。這個過程究竟是什麼?它有什麼作用?

因此,當我嘗試檢查內存使用情況時(通過執行和關閉應用程序多次),該過程給人感覺有些內存仍在使用中。我也觀察到這個過程可能會導致資源匱乏(在某些情況下CPU佔用率30%和/或100 MB內存使用量)。

我找到了名爲「Windows Presentation Foundation Font Cache 3.0.0.0」的windows服務,它可能負責生成此過程。該服務聲稱它通過緩存常用字體數據來優化WPF應用程序的性能。如果WPF應用程序尚未運行,它將啓動此服務。它可以被禁用,但這樣做會降低WPF應用程序的性能。

但是,爲什麼在WPF應用程序關閉後,Windows服務自身關閉了進程。

或者它是否實際上緩存用於任何WPF應用程序的字體信息,以便下次任何類似應用程序重新運行時將使用緩存而不重新生成應用程序的字體?如果不是那種不能被垃圾收集的數據類型?是不是導致內存泄漏的可能原因?

拜託我吧。

Thx Vinit。

回答

2

此服務旨在提高WPF應用程序的性能,並增加WPF程序(或同一程序的不同實例)之間的共享資源數量。源代碼可作爲Reference Source Code Center的一部分,有關WPF應用程序性能的更多信息可在here找到。

這個服務導致問題的地方存在孤立的情況,但是對於它在做什麼,我不認爲偶爾出現CPU峯值和100MB內存使用是有問題的。

如果您認爲服務佔用了太多資源,那麼您可以安全地禁用該服務,但最好還是分析/測量對您的應用程序有什麼影響。