windbg - 对象计数减少了 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 一起使用是一个已知问题?
我在 Windows 7 上使用 dotMemory 2018.1.4 和 WinDbg 10.0.15063,调试 x64 程序(如果有的话)。
解决方案
看起来这是 dotMemory 2018.1.4 中的错误。由于某些原因,我没有自动获得更新。我现在已经更新到 2018.2.1 版本并且对象计数是相同的。
我试图在他们的错误跟踪器中找到问题,但没有找到。
推荐阅读
- axios - lambda中的Axios不等待响应
- mysql - 有没有办法通过 WHERE IN 语句将嵌套子查询中的别名列名传递给 UPDATE 语句?
- javascript - 在 React 中使用钩子创建事件处理程序的正确方法?
- firebase - Firebase 存储:获取文件相对路径的安全方法?(存储 HTML 文件)
- python - Python登录检查验证任何正确的字母
- android - Android Dialog + Leak Canary
- linkedin - 使用 Linkedin 进行单点登录不断询问使用 API v1 登录的用户的授权
- sql - 如何在 SQL 的两个表中获取具有不常见值的行?
- wordpress - 是否有任何条件可以在联系表格 7 的单选按钮中选择最多 3 个字段
- inno-setup - 单击 Inno Setup 中的 Finish 按钮后,根据自定义复选框运行文件和程序