2

ファイルを読み取り、ファイルのメタデータを取得するアプリケーションを作成しました。アプリケーションを起動すると、プライベート ワーキング セットは約 8MB です (タスク マネージャーで表示)。ファイルをスキャンすると、メモリは最大 150MB まで増加し、そこにとどまります。アプリケーションの同じインスタンスを使用して追加のファイルを追加すると、メモリが積み重なっていきます。この動作を理解するために、メモリ プロファイラー (レッド ゲート) を使用して、次の統計を示しました。

150MB のプライベート ワーカー セット メモリのうち

  • アンマネージメモリ:94MB
  • その他のリソース (文字列、配列など) : 30MB

アンマネージ コードも Pinvoke 呼び出しも使用していないので、これは私を困惑させます。私も GC.Collect() を試しましたが成功しませんでした。

アプリケーションのアンマネージ メモリの使用量を減らす方法と、その原因として考えられるものについて、どなたか教えていただけないでしょうか。

前もって感謝します

4

1 に答える 1

3

ANTS の最近の更新では、アプリケーションのアンマネージ メモリが使用されている .NET クラスが表示されます。セットアップ画面でアンマネージ メモリ プロファイリングを有効にした後、クラス リストに移動し、新しい「アンマネージ サイズ」列で並べ替えます。

意図的にアンマネージ メモリを使用したことがないかもしれませんが、多くの .NET Framework ライブラリはネイティブ リソース (イメージング ライブラリなど) を使用しています。

于 2013-11-05T10:26:43.977 に答える