如何在应用程序的生命周期内保留特定类(类型?)的对象的处理次数。想象一下,我有一个A类,现在,我想要计算GC收集A的对象的次数。
我希望我说的是正确的,因为我今天在接受采访时被问到这个问题,而我给出的答案并不能让面试官满意。这就是我想他要问的问题。
我所说的是,可以在A类中保留一个名为 count 的静态字段,并在该对象的 Finalize()调用中增加它。
他期待的答案是一种称为静态块的东西。我在.NET / C#中从未听说过这个。有人可以解释一下这个静态块是什么吗?
答案 0 :(得分:1)
使用memprofiler,Redgate Ants,dotTrace,CLR Profiler(需要.NET 3.5 apparently的管理员权限)或Visual团队版等工具工作室。
答案 1 :(得分:0)
也许他指的是这个类的静态构造函数?
public class Foo {
public static Foo() { /* gets called once before first operator new */ }
}
答案 2 :(得分:0)
静态块实际上是C#中Static Constructor的另一个名称。在创建第一个实例之前,会自动调用它来初始化类。我无法看到这将如何帮助您跟踪课程的处理次数。我能想到的唯一方法是让你的班级实现IDisposable
,有一个名为disposeCount
的静态字段,并在每次调用Dispose
时递增它,或者确定正确地说Finalize
方法。你的答案绝对没有错,如果你接受第二次面试,你应该向他们指出:)