共享数据在哪里(在堆中)被引用?

时间:2018-11-16 10:05:47

标签: heap windbg shared-memory dump

我正在处理内存泄漏(内存使用量正在增加),我们发现该应用程序的共享内存中有一些东西:

我已经使用Visual Studio打开转储文件,并且在“内存”调试窗口中,地址0xb48B661f44周围有很多信息,但是Windbg !heap -h 0命令提供了以下内容:

...
Segment at 000000b48a850000 to 000000b48b04f000 (007ff000 bytes committed)
Segment at 000000b48f650000 to 000000b49061f000 (00fcf000 bytes committed)
...

换句话说,堆中不存在提到的地址,这意味着它是共享数据。

我想知道堆上的哪个对象正在引用该数据。有什么办法找出来吗?

在第一个评论后编辑

同时,我尝试使用Windbg的{​​{1}}命令,但这似乎不起作用:

s

=>没有结果。

对于您的信息,起始地址和结束地址的检索方法如下:

s -q 0xb483b70000 0xb4842af000 0xb48B661f44

因此,我相信通过选择!heap -h 0 0:000> !heap -h 0 Index Address Name Debugging options enabled 1: b483b70000 Segment at 000000b483b70000 to ... ... 4: ... Segment at ... to 000000b4842af000 (00002000 bytes committed) 作为起点和0xb483b70000作为终点,我已经覆盖了整个堆。

第二次修改

我还使用0xb4842af000命令研究了提到的内存地址,但我不理解输出内容:

!address

此信息说明所提到的地址是什么?

0 个答案:

没有答案