c++ - 从windbg堆输出垃圾摘要

标签 c++ memory-management windbg memory-fragmentation

首先,我的英语不好。 非常抱歉。我不住在英语区。

我有一个问题。

我正在处理 Windows 服务器程序的内存碎片。 由于内存不足无法运行超过一周。 可能是问题所在。

所以,我曾经通过windbg对'.heap -s地址(堆句柄)命令进行堆内存分析。 但我不明白这个报告。看看它。

       0:023> !heap -s 0x01490000
       Walking the heap 0000000001490000 ...........
       0: Heap 0000000001490000

       -- Omitted --

       Flags          00001002 - HEAP_GROWABLE 
       Reserved memory in segments              1047616 (k)
       Commited memory in segments              617812 (k)
       Virtual bytes (correction for large UCR) 188152 (k)
       Free space                               549 (k) (25 blocks)
       External fragmentation          0% (25 free blocks)
       Virtual address fragmentation   1254577998% (3 uncommited ranges)
       Virtual blocks  32 - total 0 KBytes
       Lock contention 1
       Segments        11

虚拟地址碎片具有垃圾值(value)。 有什么问题??这是正确的值吗?

我已经计划好了。尝试验证性能改进。另外,确定是否存在问题。但不可能,因为这个问题。

我尝试搜索多种文章。但我无法获得有用的信息。

请帮助我。

首先,为什么会发生这种情况?

第二,有什么方法可以更有效地利用内存吗?

也许,你读我的帖子很困难。我知道。所以真的很抱歉。

感谢您阅读我的帖子。

最佳答案

如果您怀疑内存泄漏,那么 UMDH 是一个很好的工具。 。这是一个免费工具,MSDN 上有很好的文档。如果您有完整的符号,这将允许您获取分配/释放的调用堆栈,并准确查看哪些调用堆栈正在泄漏。

关于c++ - 从windbg堆输出垃圾摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5254299/

上一篇:c++ - DES。弱键!

下一篇:c++ - 指针算术

相关文章:

memory-management - CUDA 分配数组

WinDbg:使用 .if 中的条件命令

c++ - 与自定义对象一起使用 accumulate

c++ - 成员函数中的 decltype(auto) 忽略无效主体,decltype(expr) 失败

objective-c - 这怎么不是内存泄漏

cocoa - RetainCount 内存未释放

c++ - 以 headless 模式运行 WinDbg

.net - 如何使用 Windbg 判断 .Net 控件是否可见

python - 在 C++ 和 Python 中使用蒙特卡罗方法计算看涨期权价格时价格差异显着?

c++ - 没有调用复制构造函数