我正在 Intel Inspector 下测试复杂的 .net/COM 应用程序(本机内存泄漏)。在 .net 代码的很多地方,我们在静态字段中缓存对 COM 对象的引用。显然,Inspector 将这些标记为泄漏。在少数情况下,添加抑制就足够了,但有时标记的对象数量(作为主 COM 对象的一部分创建)失控(数百个),抑制这些对象可能会隐藏实际泄漏的相似模式。长话短说——就在进程退出之前,我正在遍历 appdomain 中加载的所有程序集中的所有类,并且我将引用我的 COM 对象的静态字段设置为空。如果我可以打印所有引用 COM 对象的静态字段,即使它们尚未被接受为有效缓存(并且可能是实际泄漏),这对于未来的使用会非常有用。
但是,如果从未使用过 type,它的静态构造函数将在我调用 getField 时执行(查看它是否为空),并可能创建更多 COM 对象。有什么方法可以检测当前 AppDomain 中是否使用过类型?