2011-07-04 12 views
3

スレッドのメモリ統計情報(つまり、ワーキングセット、プライベートメモリなど)を取得する方法があるかどうかを質問したいと思います。私はプロセスのものを得ることができることを知っていますが、私のアプリケーションは一連のテストを実行する必要があり、テストごとに統計情報、特にピークメモリを取得する必要があります。今私がこれを行う唯一の方法は、各テストのためにアプリを実行し、プロセスのピークメモリを取得します。C#でスレッドのメモリ統計を取得する

おそらく、スレッドレベルのメモリ統計情報を取得する方法はありますか?

ありがとうございました。

答えて

4

スレッドはありませんメモリ統計を持っています。

ヒープメモリは、単一のスレッドに関連付けられていません。
あなたが探している情報は意味がありません。

+0

実際には、[ThreadStatic]メモリがあります。しかし、十分に近い。 –

+0

@ハンス:そうではありません。 '[ThreadStatic]'フィールドでオブジェクトが消費するメモリは、どのスレッドとも関連していません。 (ただし、参照型または値型はあります) – SLaks

+0

まあ、確かです。スレッドが終了するまでガベージコレクションは行われません。 –

1

他のレスポンダが示唆しているように、スレッドごとにメモリ統計情報を取得することはできません。 (実行中のプロセスのために)System.Diagnostics.Process:

  1. アプリドメインで実行しては、独立したプロセスでApp domain resource monitoring

  2. 実行]を使用してのプロパティを使用します。どちらかにあなたの最善の策は次のようになります。

関連する問題