我正在使用带有进程转储的 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
!address -摘要
--- 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