2009-08-05 6 views
2

私の同僚と私は、アプリケーションでメモリの問題を追跡しようとしている、と私の研究で私は、各スレッドは、デフォルトでは1MBのスタックを取得する方法について語っblog entryを見つけました。私たちのアプリケーションではスレッドが大量に生成されるため、何が起きているのかを正確に理解するための簡単なテストプログラムを作成しました。テストアプリ(C#)はただちに300スレッドを作成しますが、タスクマネージャーはまだ22MBのメモリしか示していません。スタックメモリはタスクマネージャによってカウントされませんか、それとも何か他のことが起こっていますか?スレッドのスタックはタスクマネージャで使用されているメモリとして報告されていますか?

答えて

1

タスクマネージャは、メモリconsumtionの決意のための最高のツールではありません。代わりに、MemProfilerRedGate's Memory Profiler

のようなツールの無料試用版をダウンロードしてください。診断またはプロファイリングのためにタスクマネージャーのmem usage列を使用しないでください。 Perfmonカウンタ、特にプライベートバイトと特定の.NETカウンタを使用して、メモリリークのような問題を明らかにします。

も参考になります。Memory Usage Auditing For .NET Applications

+0

はい、私はこれを実現する - それは、.NETメモリについての最も誇張ものの一つです。しかし、私の質問には全く答えません。質問は単純に - スタックメモリはタスクマネージャによって「使用中メモリ」として報告されていますか? –

+0

「タスクマネージャ」を「Windowsが遅いではありません、あなたは物事を想像しなければならない」ことを証明するために、Microsoftの広告チームのアプリケーションです;) –

+0

@Michaelブレイ:あなたの質問は、議論の余地があります。手元にあるタスクには、より良いツールを使用してください。 –