首先,我的英语不好。
非常抱歉。我不住在英语地区。
我有个问题。
我正在工作Windows服务器程序的内存碎片。
由于内存不足,不能运行超过一周。
可能是问题。
因此,我过去常常通过windbg来对'.heap -s address(heap handle)命令进行堆内存分析。
但是我不明白这份报告。看它。
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
虚拟地址碎片具有垃圾值。
有什么问题??值合适吗?
我已经计划了试图验证性能改进。另外,确定是否存在问题。但是不可能,因为这个问题。
我尝试搜索多种文章。但我无法获得有用的信息。
请帮我。
首先,为什么会发生?
其次,使用记忆的方式更有效吗?
可能是,您阅读我的帖子很困难。我知道。所以真的很抱歉
感谢您阅读我的帖子。
最佳答案
如果您怀疑内存泄漏,那么最好使用UMDH。这是一个免费工具,MSDN上有不错的文档。如果您有完整的符号,这将使您能够在allocs / deallocs上获取调用堆栈,并确切查看泄漏的调用堆栈。
关于c++ - 从windbg堆中输出垃圾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5254299/