【问题标题】:(C#) Can struct be viewed in CLRProfiler?(C#) 可以在 CLRProfiler 中查看结构吗?
【发布时间】:2009-11-23 03:39:36
【问题描述】:

由于 CLRProfiler 使用 HEAP statistic、OBJECTS finalized 之类的词,这让我觉得它最多只会显示盒装结构?那么如果结构是我问题的根源呢?我如何使用 CLRProfiler 了解它??

【问题讨论】:

    标签: c# struct


    【解决方案1】:

    根据文档

    “CLRProfiler 是一个专注于分析垃圾收集器堆中发生的事情的工具”

    因此您自然会看到有关堆的各种统计信息。

    结构是值类型,所以当它们自己分配时,它们是在堆栈上分配的。堆栈在堆栈展开期间被清理,因此不受 GC 的垃圾收集。如果值类型是装箱的,或者如果它们是引用类型的一部分,则更常见的是,它们的值将存储在堆中。

    我的猜测是,如果结构是您问题的根源,那是因为您的应用程序存储了大量此类结构。这通常使用数组(这是许多 .NET 集合的基础类型)来完成。数组是引用类型,所以存放在堆上。如果数组包含结构,则值也作为数组实例的一部分在堆上。

    换句话说,如果您想在运行时检查独立结构,您必须将它们定位在正在运行的托管线程的堆栈中。老实说,我对 CLRProfiler 不太熟悉,所以我不知道它是否支持。但是,您可以使用诸如 WinDbg 之类的调试器来检查它。另一方面,如果相关结构存储在集合中,则必须在堆上定位实例。

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 2022-10-04
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2013-06-08
      相关资源
      最近更新 更多