对象计数减少了 2 倍
Object count is off by a factor of 2
我有一个 dotMemory 分析会话,但无法找到内存泄漏,因此我执行了以下操作:
- 启动 dotMemory 会话
- 附加WinDbg并打入进程
- 在 dotMemory 中拍摄快照
- 让进程继续(
g
),这样 dotMemory 就可以拿下 snapshop
- 拍完快照后,再次打入流程
如果应用程序处于空闲状态,即什么也不做(好吧,它运行消息泵),我应该得到相同的结果。
查看 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 中找到一个问题,但没有找到。
我有一个 dotMemory 分析会话,但无法找到内存泄漏,因此我执行了以下操作:
- 启动 dotMemory 会话
- 附加WinDbg并打入进程
- 在 dotMemory 中拍摄快照
- 让进程继续(
g
),这样 dotMemory 就可以拿下 snapshop - 拍完快照后,再次打入流程
如果应用程序处于空闲状态,即什么也不做(好吧,它运行消息泵),我应该得到相同的结果。
查看 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 中找到一个问题,但没有找到。