【发布时间】:2014-11-26 08:48:24
【问题描述】:
我需要在 .NET 应用程序中找出内存不足 (OOM) 异常的原因。使用 perfmon,应用程序在使用相对较低的内存 (500-700mb) 时会崩溃并出现 OOM,因此我假设存在某种堆碎片。
经过研究,WinDBG 似乎是用来追踪此类问题的工具。我已经在运行进程的服务器上设置了 DebugDiag。我还设法将 DebugDiag 中的转储加载到 WinDBG 中,连接符号服务器和我自己的私有符号文件,这一切似乎都有效 - 我可以运行像 !clrstack 和 !dumpheap -stat 这样的命令,我会看到我的列出的类名。
我现在遇到的问题是我不知道如何解决追踪碎片在哪里的问题。 WinDGB 有很多带有很多不同标志和选项的命令,我不确定应该使用哪些。我也找不到一个很好的教程来说明该做什么 - 大多数都是关于启动和运行 WinDBG 的基础知识。
有人能指出我正确的方向吗?
【问题讨论】: