C# 如何挂接.NET内存管理器/垃圾收集器?

C# 如何挂接.NET内存管理器/垃圾收集器?,c#,.net,memory-management,memory-leaks,garbage-collection,C#,.net,Memory Management,Memory Leaks,Garbage Collection,我在搜索.NET内存泄漏检测工具和.NET探查器-在互联网上有很多,但是-它们都是商业工具。我想检查一下是否有开源的替代方案,它们的开发状态是什么(什么在工作,什么不在工作),如果可能的话-如果有人能告诉我哪些API被用来“钩住”.NET垃圾收集器 我还了解到引用分析是非常重要的——如果GC不收集内存——那么这意味着有人引用了该数据——因此反过来需要某种引用回溯——同样有趣的是,分析引用的API和技术是什么 我希望代码是低级别的——最好是C/C++——我怀疑它与C++/com的未注册API有什么

我在搜索.NET内存泄漏检测工具和.NET探查器-在互联网上有很多,但是-它们都是商业工具。我想检查一下是否有开源的替代方案,它们的开发状态是什么(什么在工作,什么不在工作),如果可能的话-如果有人能告诉我哪些API被用来“钩住”.NET垃圾收集器

我还了解到引用分析是非常重要的——如果GC不收集内存——那么这意味着有人引用了该数据——因此反过来需要某种引用回溯——同样有趣的是,分析引用的API和技术是什么

<>我希望代码是低级别的——最好是C/C++——我怀疑它与C++/com的未注册API有什么关系。但如果还有C#接口来执行内存分析,我也可以使用它们

如果可能的话:

  • 你能在这里发布链接到钩住.NET内存管理的开源代码项目/代码吗
  • 您可以发布与挂钩内存管理相关的API文档的链接吗

以下是我到目前为止简要分析的内容-从我自己的老问题开始-

我通过SOS/Strike link进行了追踪,您可以在那里找到以下信息:

从这个git存储库:

您可以在以下内容中找到windbg支持哪种命令(例如DumpHeap)的简要说明及其相应的实现:

但这更多的是较少的windbg扩展-由于缺少项目,从未设法编译它,而且它看起来像问题出现后的分析工具-我更愿意主动地连接到内存分配链中


我猜sos/strike的对应代码不存在?

VS 2015内置了探查器。我不知道,它是否包含在社区版中,但为什么不尝试找出它呢?我对底层的技术感兴趣-所以想创建类似于Visual Studio的内存分析器/分析器。我已经实现了本机内存泄漏检测工具,希望更深入地分析如何扩展对托管端的支持。如果您真的对该技术本身感兴趣,请确保访问Microsoft在GitHub发布的CoreCLR和CoreFX repos。这向您展示了所有的实现细节,您应该能够找到可以钩住的东西。有没有使用这些API接口的示例项目?你可以加上这个作为答案,因为它部分地回答了我的问题。