一:背景1.讲故事最近分享了好几篇关于 非托管内存泄漏 的文章,有时候就是这么神奇,来求助的都是这类型的dump,一饮一啄,莫非前定 。让我被迫加深对 NT堆, 页堆 的理解,这一篇就给大家再带来一篇内存泄漏 。
前段时间有位朋友找到我,说他的程序出现了非托管泄漏,某一块的操作会导致非托管内存上涨的很快,让我帮忙逆向看下是哪里的操作没有释放资源? 既然找到我,那就上 WinDbg 分析吧 。
二:WinDbg 分析1. 哪里的内存泄漏看内存泄漏还是老规矩,使用 !address -summary 命令就可以了 。
0:000> !address -summary--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotalFree 443 7fc`685d1000 ( 7.986 TB) 99.82%Heap 658 3`563aa000 ( 13.347 GB) 92.89% 0.16%<unknown> 770 0`1ff5a000 ( 511.352 MB) 3.48% 0.01%Image 1196 0`108ba000 ( 264.727 MB) 1.80% 0.00%Stack 108 0`08c40000 ( 140.250 MB) 0.95% 0.00%Other 31 0`081d8000 ( 129.844 MB) 0.88% 0.00%TEB 36 0`00048000 ( 288.000 kB) 0.00% 0.00%PEB 1 0`00001000 ( 4.000 kB) 0.00% 0.00%--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotalMEM_FREE 443 7fc`685d1000 ( 7.986 TB) 99.82%MEM_COMMIT 2464 3`67933000 ( 13.618 GB) 94.77% 0.17%MEM_RESERVE 336 0`300ec000 ( 768.922 MB) 5.23% 0.01%
经验总结扩展阅读
- Bing 广告平台迁移到 .net6
- 冬奥会多久举行一次
- 第一次办信用卡哪个银行最好申请
- 抖音怎么一次性删掉赞
- 长城电子借记卡1类和2类的区别
- 微信怎么删除好友,微信好友怎么快速删除(微信怎么一次性删除所有的好友)
- 木偶奇遇记主要内容
- 二次供水指什么意思 二次供水和一次供水的区别
- 邮箱密码忘记了怎么找回
- 地球史上的第一次生物大灭绝