3

現在、プライベート ワーキング セットのサイズが 865MB に達している大きな .NET アプリケーションがあります。

VMMap を実行したところ、ヒープは約 587MB で、マネージド ヒープはわずか 255MB (プライベート ワーキング セットでもあります) であることがわかりました。

このすべてのアンマネージ コードが非常に多くのメモリを使用するのは正常ですか (.net ランタイムによって使用されていると思います)。

:SOS拡張機能付きのWinDbgを使用しました。問題はマネージド ヒープのメモリ消費ではなく、「アンマネージド」ヒープです。

VMMap のスクリーンショット: http://img687.imageshack.us/img687/1529/vmmap.png

詳細: 合計サイズ: 1487MB コミット済み: 1359MB プライベート: 931MB 合計 WS: 967MB プライベート WS: 865MB フリー (サイズ): 609MB

前もって感謝します。

4

2 に答える 2

0

はい!管理されていないオブジェクトが適切に解放されていない場合、より多くのメモリ リークが発生する可能性さえあります。obcconnection オブジェクトが RAM のギグを食い尽くしているのを見つけたことがあります (ループ内で接続を開いたり閉じたりしようとしていました)。アプリが最終的にメモリ不足になり、クラッシュするほどです。

どのアンマネージド オブジェクトを扱っていますか?

于 2010-11-17T22:30:46.227 に答える
0

CLRProfiler ( http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a362781c-3870-43be-8926-862b40aa0cd0&DisplayLang=en ) を使用して、ヒープ上にあるオブジェクトを確認します。

注: .NET 2.0 バージョンは .NET 4.0 でも動作します。

于 2010-11-17T22:34:27.243 に答える