【问题标题】:Alive objects during lifetime of a .NET application.NET 应用程序生命周期内的活动对象
【发布时间】:2014-06-13 22:39:02
【问题描述】:

在 .NET 应用程序的生命周期中,在给定的时间点,我想了解以下内容: 1. 内存中存活的对象列表是什么? 2. 每个物体的确切尺寸是多少? 3. 谁持有每个对象的引用?

另外,在 .NET 应用程序的执行过程中,无论何时创建任何对象,我都会立即想知道它。同时,我也想知道它的尺寸是多少?

【问题讨论】:

  • 这不是您“想要”某些东西的网站。这是一个您无法尝试并需要帮助的网站。那么到目前为止,您自己尝试了什么?
  • 我用谷歌搜索了所有活着的物体,我发现了以下。 [link]stackoverflow.com/questions/3912683/… 是否需要分析器或调试器?
  • 这些是您可以通过使用 SOS 调试器扩展的 Windbg 找到的内容。你需要一个很好的理由来做这件事,学习曲线相当陡峭。专用的 .NET 内存分析器总是更友好的工具。从您自己的程序中草拟任何想法来执行此操作,GC 内部是禁止的,程序无法自行调试。
  • 问题 1-3 可以通过 SOS 调试器扩展来回答。可以通过 CLR 事件跟踪分配。但是,请记住,这些问题的答案数据量很大。与其尝试收集您能想到的所有数据,不如专注于您要解决的特定问题。

标签: .net


【解决方案1】:

使用 .net 对象树的典型方法是使用外部内存分析器。通常,您将配置文件附加到您的应用程序,然后通过与分析器的 UI 交互或执行命令来浏览对象图。考虑一下我关于这个主题的文章http://alexatnet.com/articles/net-memory-management-and-garbage-collector

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多