Windows Vistaでは約40MBのプライベートメモリを使用する中規模のプロセスビューアがあります。問題は、人々が常にProcess Explorerと同様の管理されていないツールで使用されるメモリの量とこの数値を比較することです。.NETアプリケーションのスレッド数を減らす
- 一つRPCスレッド(RPCRT4.DLL ThreadStartRoutine!)
- ワンCOM関連のスレッド(OLE32.DLL:
私は私のプログラムがアイドル状態のときに、13件の実行中のスレッドがあることに気付きました! CoRegisterSurrogateEx + 0x35e0)
- 二NTDLLスレッド(ntdll.dllの!TppWorkerThread、ntdll.dllの!TppWaiterpThread)
- メインGUIスレッド
- CLRが使用するタイマースレッド()
- ゲートスレッド(CLR)
- デバッガスレッド(CLR)
- 4ワーカースレッド(のMscorwks.dll!スレッド:: intermediateThreadProc)
- そして最後にGDI +バックグラウンドスレッド(GDIPLUS.DLL!BackgroundThreadProc)を
スレッドスタックメモリ(各1MB)を解放するには、どうすればこれらのスレッドを取り除くことができますか? ThreadPool.GetAvailableThreadsは、実行中のワーカースレッドが0であるが、3つの "intermediateThreadProc"スレッドがあることを示しています。サービスマネージャAPIを使用すると、RPCスレッドと何か関係がありますか? (それはRPCコールを行います)。
13のスレッドを参照してくださいには、この懸念を駆動している何 –
私には過度の音はありませんか?ネイティブ実装と比較して、同じまたは少ないメモリ使用量を持つ管理対象プロセスモニタを作成したいですか? –
はい、それは私がしたいことです。ネイティブ実装で使用されているメモリと同程度かそれ以下ではありますが、確かに40MBではありません。それはかなりのメモリです。プロジェクトはhttp:// processhackerにあります。あなたが本当に知りたいのであればsourceforge.net。 – wj32