记一次 .NET 某餐饮小程序 内存暴涨分析
一:背景
- 讲故事
前些天有位朋友找到我,说他的程序内存异常高,用 vs诊断工具 加载时间又太久,让我帮忙看一下到底咋回事,截图如下:
确实,如果dump文件超过 10G 之后,市面上那些可视化工具分析起来会让你崩溃的,除了时间久之外这些工具大多也不是用懒加载的方式,比如 dotmemory 会把数据全部灌入内存,针对这种dump,你没个32G内存就不要分析了,这也是 windbg 在此类场景下的用武之地。
闲话不多说,朋友的dump到了,赶紧分析一波。
2. 到底是谁吃了内存
还是那句话,用 !address -summary 看下是托管内存还是非托管内存的问题。
0:000> !address -summary
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free 366 7dbf3e6cb000 ( 125.747 TB) 98.24% <unknown> 5970 240
99b78000 ( 2.252 TB) 99.97% 1.76%
Stack 159 0136a0000 ( 310.625 MB) 0.01% 0.00% Image 1943 0
0a2e8000 ( 162.906 MB) 0.01% 0.00%
Heap 89 00a1e0000 ( 161.875 MB) 0.01% 0.00% Other 12 0
001da000 ( 1.852 MB) 0.00% 0.00%
TEB 53 00006a000 ( 424.000 kB) 0.00% 0.00% PEB 1 0
00001000 ( 4.000 kB) 0.00% 0.00%
--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_FREE 366 7dbf3e6cb000 ( 125.747 TB) 98.24% MEM_RESERVE 608 23d
fda87000 ( 2.242 TB) 99.52% 1.75%
MEM_COMMIT 7619 2`c3e9e000 ( 11.061 GB) 0.48% 0.01%
从卦中看 ntheap=161M,看样子是托管堆的问题了,继续使用 !eeheap -gc 看下托管堆。
0:000> !eeheap -gc
Number of GC Heaps: 8
Heap 0 (00000277134AD330)
标签:总结,14,MB,MEM,0.00%,0.01%,内存,TB From: https://www.cnblogs.com/lmyy/p/17719709.html