4

.NET アプリケーションでマネージ ヒープにアクセスして、現在そこに割り当てられているオブジェクトを列挙することはできますか?

それを可能にするさまざまなツールがあることは知っていますが、フォームを閉じた後にすべてが破棄されてクリーンアップされているかどうかを確認するなど、自動テストで使用できるように、コードから自分で行うことをお勧めします。

4

5 に答える 5

2

http://sourceforge.net/projects/profilesharp/には、利用可能なソース コードを含むプロファイラーがあります。

于 2009-07-26T15:28:56.850 に答える
1

プロファイラー (プロファイリング API を使用) は、CLR によって読み込まれるという意味で「外部」コンポーネント (完全な COM ではありません) であり、マネージ コード (および多くの他のものも同様です)。それらはアンマネージ コードで記述されます。

私の知る限り、CLR を監視するプロファイラー/デバッガーを呼び出すことなく、この情報を内部的に取得する方法はありません。また、この種の情報の多くは、コードの実行が終了した後にのみ存在するため (多くの Dispose() 呼び出し、ファイナライズなど)、常に取得できるとは限らないことも覚えておいてください。

于 2009-07-26T22:55:25.217 に答える
1
于 2017-05-03T10:06:31.493 に答える
1

CLR プロファイラーを使用して、この情報を確認できます。

http://www.microsoft.com/downloads/details.aspx?familyid=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en

于 2009-07-26T15:17:40.510 に答える
1

プロファイラーを使用する以外の唯一の方法は、WinDbg を使用し、SOS 拡張機能をロードすることです。

IIRC、!EEHeap を呼び出します。

于 2009-07-26T15:24:39.123 に答える