首页 > 系统相关 >Windbg下使用dump分析内存溢出

Windbg下使用dump分析内存溢出

时间:2024-10-17 09:48:32浏览次数:7  
标签:Windbg dump details https dumpheap string 内存

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

标签:Windbg,dump,details,https,dumpheap,string,内存
From: https://www.cnblogs.com/chinasoft/p/18471449

相关文章

  • 【c#】内存共享
    类:MemoryMappedFileOpenExisting打开指定名称的内存映射文件,不存在的化报异常FileNotFoundExceptionprivateboolIsMMFExisting(stringmmfName){try{varmmf=MemoryMappedFile.OpenExisting(mmfName);if(mmf==null)returnfalse;......
  • weakmap、weakset、内存泄漏
    weakmap、weakset都是ES6的新增的数据结构WeakMapWeakMap对象是键值对的集合,提供了一种键值对的存储机制。它的键必须是对象类型,值可以是任意类型。它的键被弱保持,也就是说,当其键所指对象没有其他地方引用的时候,它会被GC回收掉。WeakMap提供的接口与Map相同。与Map......
  • 内存管理-31-系统内存统计-6-dumpsys meminfo
     一、dumpsysmeminfo命令数据格式Exynos:/#dumpsysmeminfoApplicationsMemoryUsage(inKilobytes):Uptime:9463100Realtime:9463100TotalPSSbyprocess:452,701K:com.sumsung.speech(pid2297)266,607K:system(pid936)79,088K:vendor.q......
  • 计算机基础(cpu,内存,硬盘)
    计算机基础(cpu,内存,硬盘)内存:负责硬盘等硬件上的数据与CPU之间数据交换处理;缓存系统中的临时数据。断电后数据丢失。硬盘:​ 存储资料和软件等数据的设备,有容量大,断电数据不丢失的特点。流程​ 简单来说,硬盘用来存储程序和数据,当运行程序时,CPU首先接受到命令,之后CPU是告诉......
  • Linux多进程通信--管道、消息队列、共享内存
    转载至https://www.cnblogs.com/LUO77/p/5816326.html多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(childprocess)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程id。将子进程id返......
  • OS-Nachos内存管理
    实验目的在Nachos现有页表的基础上,增加TLB快表机制,使得在做虚拟地址到物理地址的转换时,优先从TLB快表中读取;针对TLB增加NRU置换算法;除实验源码和实验结果截图以外,需提供以下文字解释说明:解释说明nachos-xuserProgName的启动过程及原生Nachos系统中的内存访问过程;解释说明......
  • 在 C 语言中通过指针访问结构体内存
    在C语言中,指针是用于引用内存地址的变量,通过指针可以有效地访问和操作内存。即使未显式创建结构体实例,只要指向的内存区域足够大且对齐方式正确,指针也能够按照特定结构体的布局访问数据。以下是这个机制的详细解读。1.指针与内存布局指针的类型(如Block*)告诉编译器如何解释......
  • C语言中的指针与内存管理:两种情况分析
    在C语言中,指针的使用和内存管理是非常重要的概念。在本文中,我们将分析两种情况:一种是通过指针修改结构体内容,另一种是错误地尝试通过指针分配新的内存。我们将详细探讨这两种情况中的内存管理问题和如何避免常见的错误。第一例:通过指针修改结构体内容以下是第一段代码:#includ......
  • 【C语言】动态内存管理及相关笔试题
    文章目录一、为什么有动态内存分配二、malloc和free1.malloc函数的使用2.free函数的使用三、calloc和realloc1.calloc函数的使用2.realloc函数的使用四、常见动态内存分配的错误五、动态内存经典笔试题题1题2题3六、总结C/C++中程序内存区域划分一、为什么有动态......
  • 曝iPhone 18 Pro Max首发2nm芯片:内存升级12GB
    10月15日消息,业内人士手机晶片达人爆料,2026年的iPhone18系列首发2nm处理器A20,这颗芯片采用全新的WMCM封装,内存同时升级到12GB。结合此前爆料的信息,目前可以确定顶配版iPhone18ProMax能首发A20,并配备12GB内存,至于iPhone18,按照苹果的差异化策略,有可能无缘2nm和12GB内存。作......