1

アプリケーション (PINVOKE を介して C++ dll を使用する .NET アプリ) の 1 つでデバッグ診断ツール v1.2 を実行したところ、次の警告が表示されました。

usp10.dll は、9.25 MB 相当の未処理の割り当てを担当しています。以下は、上位 2 つのメモリ消費関数です。 usp10!MapFullFile+14: 9.19 MB 相当の未処理の割り当て。usp10!AllocateCMAPtables+e6: 18.50 KB 相当の未処理の割り当て。

この USP10.DLL がどこから来たのかわかりません。Google によると、これはUnicode でエンコードされたテキストをレンダリングするサービスであるとのことです。この警告が表示される理由はありますか?

4

1 に答える 1

4

Usp10.dll は Uniscribe スクリプト プロセッサです。テキストの適切な書式設定を処理します。テキストを画面に出力するプログラムは、それに依存します。CMap はフォント データ構造です。あなたが見ているのは、フォントデータをキャッシュしていて、データが必要になるたびにフォントファイルから取得するのはコストがかかりすぎて、テキストのレンダリングが非常に遅くなります.

そのようなキャッシュは、DLL がアンロードされるまで破棄されません。したがって、実際に見ているのはツールの欠陥です。通常のプロセスのクリーンアップが行われる前に、メモリリークが早すぎると報告します。ベンダーに欠陥レポートを提出する必要があります。

于 2012-10-10T14:00:27.737 に答える