2009-02-27 11 views
6

私は、現在のメモリ使用量、作成されたオブジェクトの数などを記録する簡単なアプリケーションを作成したいと思います.C++では通常は新しい演算子をオーバーライドしますが、C#ではこれを行うことはできません。プロファイラを使用せずにこれを行う方法はありますか?C#アプリケーションでプロファイラを使用せずにメモリ使用量を追跡できますか?

答えて

3

ガベージコレクタから始めたいと思うかもしれません。 MSDNにはhereという名前のメンバーがいくつかあります。これは、割り当てられたメモリの総量、GCが収集した回数などのように、いくつかのことを行う方法を示すことができます。ロードされたアセンブリのオブジェクトの数を取得するなど、それより高度なものであれば、おそらくプロファイラを使用するか、自分で何かを書く必要があります。

1

.NETメモリパフォーマンスカウンタは集計情報を提供しますが、オブジェクトカウンタは含みません。そのためにはプロファイラが必要です。 WMIを使用して

1

は試してみてください。

をプロセスの使用状況(W2K3/2K8)を取得するには:

"SELECT IDProcess, PercentPrivilegedTime, PercentProcessorTime, PercentUserTime FROM Win32_PerfFormattedData_PerfProc_Process where Name='process_name.exe'" 

このサイトの使用を特定するには:

"SELECT ProcessId, CommandLine, WorkingSetSize, ThreadCount, PrivatePageCount, PageFileUsage, PageFaults, HandleCount, CreationDate, Caption FROM Win32_Process where Caption='process_name.exe'" 

WQL testeためのこのツールを使用します

またはPerfMonツールを使用します。

カウンタの詳細については、Windows System Resource Manager Accounting(docの末尾)を参照してください。

幸運。

関連する問題