【发布时间】:2014-06-07 08:25:49
【问题描述】:
我们有一个 32 位 Windows 服务会泄漏内存 - 引发 OutOfMemory 异常。它是在 windows server 2003 上运行的 .net 4.0 可执行文件。在使用 WinDbg 调试故障转储文件时,我看到大部分内存实际上是保留的,没有提交。
从 WinDbg 屏幕截图中可以看出,有 2.5 Gb 的未分类内存使用量,其中大部分 2.1 Gb 实际上是保留内存 (MEM_RESERVE)。我有调试粉碎转储的经验,但这种情况对我来说是新事物。 MEM_COMMIT 退出 OK - 564.270 Mb,托管堆大小约为 82 Mb
我还检查了本机堆,看看是否有大块数据保留,但在那里也找不到任何可疑的东西
所以我的问题是 - MEM_RESERVED 是否可能导致 OOM 异常?如果是这样,我该如何调试它,看看为什么/有多少内存被保留?您还会在哪里寻找可能存在的问题?
如果需要任何其他信息,请询问,我会更新我的帖子。
【问题讨论】:
标签: .net memory memory-management out-of-memory windbg