0

高メモリ使用率のダンプを作成し、!dumpheap -stat と !dumpheap -mt を使用して、それぞれ 30 MB の 2 つの大きな文字列汎用リストのアドレスを取得しました。

これらのリストについてもっと知りたいです。それらに含まれるもの、またはそれらを使用しているコードの一部。

それらを見つける方法はありますか?

0:000> !do 2b370038 名前: System.Object[] MethodTable: 71e240bc EEClass: 71c0da54 サイズ: 33554448(0x2000010) バイト 配列: ランク 1、要素数 8388608、タイプ CLASS 要素タイプ: System.Collections.Generic.List` 1[[System.String, mscorlib]] フィールド: なし

4

2 に答える 2

1

配列インスタンスに関する情報を取得するには、フラグを指定して!dumparrayコマンドを使用できます。-detailsただし、配列全体をダンプすると時間がかかり、大量のテキストが出力される可能性があることに注意してください。

インスタンスを存続させているものを見つけるには、!gcrootコマンドを使用します。!refssosex.dllからコマンドをチェックアウトすることもできます。

sosex.dllに!gcgenは、インスタンスの生成を通知するコマンドもあります。IIRCに対応するコマンドがsos.dllのCLR4.0バージョンに追加されました。

于 2009-07-09T23:32:51.650 に答える
0

.Net Memory Profiler ( http://memprofiler.com ) を試して、マネージ メモリ ダンプを調べることをお勧めします。それはwindbgよりずっと簡単です。参照のグラフを検索および探索するために使用できる優れた GUI。インスタンスのフィールドの値も確認できます。

于 2009-06-24T03:24:58.543 に答える