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 アプリで使用されるフォント情報をまとめてキャッシュするので、次回再実行すると、同様のアプリのいずれかがアプリケーションのフォントを再生成せずにキャッシュを使用しますか? もしそうなら、それはガベージコレクションできないタイプのデータではありませんか? それがメモリ リークにつながる可能性のある原因ではないでしょうか。
私を照らしてください。
Thx Vinit。