5

.Net 2.0のCLRプロファイルのようなものを使用して、(ASP.Netワーカープロセスの)任意の時点でヒープ内でより多くのスペースを使用しているオブジェクトを確認したいと思います。

ただし、CLRプロファイラーでは、アプリを起動することしかできず、既存のアプリに接続することはできません。これは、割り当てとGCも追跡するためだと思いますが、あまり興味がありません。ヒープの現在の状態のスナップショットを取り、そこに何があり、各種類のオブジェクトがいくつあるか、および各オブジェクトタイプによって合計で何バイトが使用されているかを示すものが欲しいです。

何か案は?

4

2 に答える 2

9
  • デバッガーをアタッチする

cdb -p

  • .net デバッガ拡張機能をロードする

.loadby sos mscorwks

  • CLRProfiler が理解できる形式でヒープをダンプする

!TraverseHeap heap.txt

  • デバッガーを切り離す

qd

  • clrprofiler アプリで heap.txt を読み込みます
于 2008-09-28T16:01:24.020 に答える
3

.Netメモリプロファイラーはまさにあなたが必要とするものです。無料ではありませんが、試用版があります。実際、私はこのトライアルを使用して、前回のプロジェクトのリークを見つけました。注目すべき機能の1つは次のとおりです。

.NETメモリのスナップショットを収集して比較することにより、メモリリークを簡単に特定します

これがあなたが探しているものだと思います。

于 2008-08-29T01:37:05.943 に答える