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

我有个问题。

我正在工作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/

10-13 09:48