对象计数减少了 2 倍

Object count is off by a factor of 2

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

  1. 启动 dotMemory 会话
  2. 附加WinDbg并打入进程
  3. 在 dotMemory 中拍摄快照
  4. 让进程继续(g),这样 dotMemory 就可以拿下 snapshop
  5. 拍完快照后,再次打入流程

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

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

然而,在 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 一起使用是一个已知问题?

我在 Windows7 上使用 dotMemory 2018.1.4 和 WinDbg 10.0.15063,调试 x64 程序,如果有任何问题的话。

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

我试图在 their bug tracker 中找到一个问题,但没有找到。