WinDbg とプロセス ダンプを使用して、メモリ負荷の高い .net アプリケーションで事後分析を行っています。このプロセスは Windows サービスです。
このプロセスのメモリ消費量のこの 14GB のほとんどは、中止されたスレッド、つまり多くの孤立したセマフォ/イベント/ミュータントなどから来ていると感じました。単一のセマフォ/イベント/ミュータントと、この種の状況に役立つ WinDbg コマンドの種類は?
以下は、WinDbg の出力です。
!扱う
**Type Count**
None 90
Event 5550
Section 41
File 1166
Directory 3
Mutant 160
Semaphore 4581
Key 78
Token 2
Thread 553
IoCompletion 6
Timer 1
TpWorkerFactory 3
ALPC Port 9
WaitCompletionPacket 33
!アドレス -概要
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
<unknown> 471 3`86ea2000 ( 14.108 Gb) 92.40% 0.01%
!threads (リストされている多くのスレッドには ThreadAbortException 例外があります)
Lock
ID OSID ThreadOBJ State GC Mode GC Alloc Context Domain Count Apt Exception
12 3 33f0 00000017e3c23200 1282b221 Preemptive 0000000000000000:0000000000000000 00000017e3bb3930 1 MTA System.Threading.ThreadAbortException 000000181de5d668