Windbg下使用dump分析内存溢出

https://www.cnblogs.com/M-MAKI/p/17085360.html

 

分析简述

 创建dump文件;通过 !address -summary 和 !eeheap -gc 判断是否为内存泄漏;通过!dumpheap -stat观察出问题的类型;通过!dumpheap -mt MT号 -min xxx 来索引该类型下占用较高的数据;

再通过!gcroot GC根来查看该根被哪些所引用;

1.创建dump的方式可以在任务管理器中,在对应的进程下右击,选择创建转储文件

2.打开Windbg程序,选择Open Source File,选择刚刚的dump文件

3.在命令行输入!dumpheap -stat,可以查看当前所有托管类型的统计信息,包括它们的内存占用情况

 

4.从上图可以看到String和XML是占用内存最大的两个类型,我们接着使用!dumpheap -mt 00007ffaa50cd698 -min 300    命令检索对应MT中300byte以上的string

5.可以看出没有特别占用内存的string存在,但可以看看每个string下具体都存储的什么字符串

   使用!do 000001b45c201080,即!do GC根,可使用!gcroot GC根查看该变量的引用情况,而如果gcroot出来没有引用根,即Found 0 unique roots (run '!GCRoot -all' to see all roots).则考虑是否是因为死线程的原因造成的。

 参考文献:

https://blog.csdn.net/mzl87/article/details/127670331

https://blog.csdn.net/xdpcxq/article/details/128219304

 

https://blog.csdn.net/biyusr/article/details/125904480

posted @ 2024-10-17 09:56  China Soft  阅读(114)  评论(0编辑  收藏  举报