我正在调查C#/ WPF / .NET 4.51应用程序中可能的内存泄漏。
启动后以及分配的内存超过顶部数小时后,我直接为应用程序制作了快照。
我使用VisualStudio的进程转储工具检查了托管堆实例。一切看起来都很好。
在WinDbg中打开转储似乎可以确认这一点,因为堆和堆栈以我期望的方式增长(+ 50MB)(左:第一个转储,右:最后一个转储):
让我烦恼的是,提交的页面的大小增长了很多(左:第一个转储,右:最后一个转储):
同样,VMMap将这个巨大的提交块显示为“私有数据”(与上面的转储无关。屏幕截图大约在一小时后拍摄):
请纠正我:
由于堆很好并且使用VirtualAlloc()直接分配了专用字节,因此我可以从可能的泄漏候选列表中排除“我们的”托管应用程序代码。
有没有办法缩小泄漏的原因?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句