.NET光谱检测软件内存暴涨,分析有哪些技巧?

摘要:一:背景 1. 讲故事 训练营里的一位学员找到我,说他们的系统会出现内存暴涨的情况,看了下也不是托管堆的问题,让我协助一下到底怎么回事?既然有dump了,那就开始分析之旅吧。 二:内存暴涨分析 1. 为什么会暴涨 在分析之前还是那条原则,不
一:背景 1. 讲故事 训练营里的一位学员找到我,说他们的系统会出现内存暴涨的情况,看了下也不是托管堆的问题,让我协助一下到底怎么回事?既然有dump了,那就开始分析之旅吧。 二:内存暴涨分析 1. 为什么会暴涨 在分析之前还是那条原则,不要过分的相信求助者的话,否则容易被他带沟里去,毕竟人家是业余的,你是专业的。。。接下来使用 !address -summary 观察下提交内存,输出如下。 0:000> !address -summary --- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal Free 637 5ffd`2b0ce000 ( 95.989 TB) 74.99% <unknown> 2783 2001`3b63cc00 ( 32.005 TB) 99.98% 25.00% Heap 3737 1`509cf000 ( 5.260 GB) 0.02% 0.00% Image 2615 0`2deb1400 ( 734.692 MB) 0.00% 0.00% Stack 235 0`12d00000 ( 301.000 MB) 0.00% 0.00% Other 80 0`082c8000 ( 130.781 MB) 0.00% 0.00% TEB 78 0`0009c000 ( 624.000 kB) 0.00% 0.00% PEB 1 0`00001000 ( 4.000 kB) 0.00% 0.00% --- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal MEM_PRIVATE 6681 2002`9d342000 ( 32.010 TB) 100.00% 25.01% MEM_IMAGE 2625 0`2deca000 ( 734.789 MB) 0.00% 0.00% MEM_MAPPED 223 0`09d16000 ( 157.086 MB) 0.00% 0.00% --- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal MEM_FREE 637 5ffd`2b0ce000 ( 95.989 TB) 74.99% MEM_RESERVE 855 2001`4093a000 ( 32.005 TB) 99.98% 25.00% MEM_COMMIT 8674 1`945e8000 ( 6.318 GB) 0.02% 0.00% ... 从卦中可以看到当前 MEM_COMMIT=6.3G 和 Heap=5.2G,卦象里已经非常明显的表明当前属 NT堆 暴涨,缩小范围之后继续使用 !heap -s 下钻分析。
阅读全文