【问题标题】:Finding garbage collection roots [closed]寻找垃圾收集根[关闭]
【发布时间】:2016-08-19 21:55:49
【问题描述】:

.NET 中是否有提供类似 WinDBG-SOS 功能的 API?

给定一个对象,我想知道有多少根在运行时通过 C# 在同一进程中保持其活动状态。

【问题讨论】:

  • 我不确定在运行时级别上是否可行。优化后的代码可以跳过堆栈直接进入 CPU。所以我想知道你希望从这个 API 得到什么输出?
  • 无 API。您需要一个内存分析器,其中有几个。您最喜欢的网络搜索引擎可以为您提供帮助。
  • @Sergey.quixoticaxis.Ivanov 基本上你可以用 WinDBG 实现什么;找到内存中的对象及其根。
  • @Uno 我想指出这样一个事实,即恕我直言,如果将其添加到运行时 API,那就太奇怪了,因为它是一个仅针对调试构建提供合理信息的 API。

标签: c# .net garbage-collection


【解决方案1】:
【解决方案2】:

是的,有。如果没有,所有这些配置文件将如何工作?这称为 Profiling API:https://msdn.microsoft.com/en-us/library/ms404386(v=vs.110).aspx。

API 本身是非托管的(COM 对象)。但是没有什么可以阻止您通过 RCW 从托管代码中使用它。

我不确定您是否可以从内部剖析流程。我认为探查器必须在另一个进程中。虽然我认为进程处理通信并通过命名管道等通信方法将数据反馈回分析进程没有问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2012-01-18
  • 2023-04-03
  • 2010-09-10
  • 2011-05-27
  • 2012-01-10
  • 2015-06-10
相关资源
最近更新 更多