首页 > 解决方案 > 对象计数减少了 2 倍

问题描述

我有一个 dotMemory 分析会话,但我无法找到内存泄漏,所以我做了以下操作:

  1. 启动 dotMemory 会话
  2. 附加WinDbg并闯入进程
  3. 在 dotMemory 中拍摄快照
  4. 让进程继续 ( g) 以便 dotMemory 可以获取 snapshop
  5. 拍摄快照后,再次进入进程

像这样我应该得到相同的结果,如果应用程序处于空闲状态,即什么都不做(嗯,它运行消息泵)。

查看 dotMemory 快照中的对象,我可以看到 88000 个 JProperty 类型的对象:

dotMemory 截图

然而,在 WinDbg 中,我看到了双倍数量的对象:

0:021> !dumpheap -stat -type JProperty
Statistics:
              MT    Count    TotalSize Class Name
000007fe7d3a3c28    83930      3357200 Newtonsoft.Json.Linq.JPropertyKeyedCollection
000007fe7d3a4ef0   177104      4250496 Newtonsoft.Json.Linq.JProperty+JPropertyList
000007fe7d3a4b80   177104     18418816 Newtonsoft.Json.Linq.JProperty
Total 438138 objects

谁错了 - 或者将调试器与 dotMemory 一起使用是一个已知问题?

我在 Windows 7 上使用 dotMemory 2018.1.4 和 WinDbg 10.0.15063,调试 x64 程序(如果有的话)。

标签: windbgdotmemory

解决方案


看起来这是 dotMemory 2018.1.4 中的错误。由于某些原因,我没有自动获得更新。我现在已经更新到 2018.2.1 版本并且对象计数是相同的。

我试图在他们的错误跟踪器中找到问题,但没有找到。


推荐阅读