首先,我的英语不好。非常抱歉。我不是住在英语区。
我有个问题。
我正在处理Windows服务器程序的内存碎片。由于内存不足,不能运行超过一周。这可能是个问题。
因此,我习惯于使用windbg to '.heap -s address(堆句柄)命令进行堆内存分析。但我看不懂这份报告。看看这个。
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虚拟地址碎片具有无用价值。有什么问题吗??它的价值是正确的吗?
我已经计划好了。已尝试验证性能改进。另外,确定是否存在问题。但不可能,因为这个问题。
我试着搜索了很多种类的文章。但我无法获得有用的信息。
请帮帮我。
首先,为什么会发生这种情况?
第二,是更有效地使用内存的方法吗?
也许,你读我的帖子很难。我知道呀。真的真的很抱歉。
感谢您阅读我的帖子。
发布于 2011-03-10 12:25:09
如果您怀疑是内存泄漏,那么UMDH将是一个很好的工具。这是一个免费的工具,在MSDN上有很好的文档。如果你有完整的符号,这将允许你在allocs/deallocs上获取调用堆栈,并准确地看到调用堆栈泄漏了什么。
https://stackoverflow.com/questions/5254299
复制相似问题