我正在寻找.NET内存泄漏检测工具和.NET分析器 - 在互联网上有很多,但是 - 它们都是商业工具。我想检查是否有任何开源替代品,他们的开发状态是什么(什么工作,什么不工作),以及是否可能 - 如果有人能够指出我用哪个API来“挂钩”。 NET垃圾收集器。
另外我已经明白参考分析是非平凡的 - 如果GC不收集内存 - 那么这意味着有人引用了这些数据 - 因此转而需要某种参考回溯 - 同样有趣的是什么API和技术存在分析参考文献。
我希望代码是低级别的 - 最好是C / C ++ - 我怀疑它与C ++ / COM未记录的API有关。但如果还有C#接口来执行内存分析 - 我也可以使用它们。
所以如果可能的话:
答案 0 :(得分:0)
这是我迄今为止简要分析的内容 - 来自我自己的老问题 - Resolve managed and native stack trace - which API to use?
我已经跟踪并通过SOS / Strike链接,您可以在其中找到以下信息:
从这个git存储库: https://github.com/dotnet/coreclr/blob/master/src/ToolBox/SOS/Strike/sosdocs.txt
您可以找到关于windbg支持哪种命令的简要说明(例如DumpHeap),以及相应的实现:
https://github.com/dotnet/coreclr/blob/master/src/ToolBox/SOS/Strike/strike.cpp
但这更多的是windbg扩展 - 由于缺少项目而从未设法编译它,并且在问题出现之后它看起来像分析工具 - 我更愿意积极地连接到内存分配链。
我猜sos / strike的通讯代码不存在?