首先,我的英语不好。 非常抱歉。我不住在英语区。
我有一个问题。
我正在处理 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/