memberInfoCacheCreation MDA

更新:2007 年 11 月

memberInfoCacheCreation 托管调试助手 (MDA) 在创建 MemberInfo 缓存时被激活。这种强烈迹象表明程序正在利用资源昂贵的反射功能。

症状

程序的工作集增加了,因为程序正在使用资源昂贵的反射。

原因

涉及 MemberInfo 对象的反射操作被认为是资源昂贵的,因为它们必须读取存储在冷页 (cold page) 中的元数据,并且它们一般指示程序正在使用某种类型的后期绑定方案。

解决办法

通过启用此 MDA 然后在调试器中运行代码,或者在激活 MDA 时附加一个调试器,您可以确定程序中正在使用反射的位置。在调试器下将获得堆栈跟踪,该跟踪表明 MemberInfo 缓存的创建位置,并且从该位置可以确定程序正在使用反射的位置。

该解决方案依赖代码的目标。此 MDA 警告您程序具有后期绑定方案。您可能想要确定能否替换早期绑定方案,或考虑后期绑定方案的性能。

对运行库的影响

所创建的每个 MemberInfo 缓存都将激活此 MDA。性能影响可忽略。

输出

该 MDA 输出一条消息,指示已创建 MemberInfo 缓存。可使用调试器获取堆栈跟踪,该跟踪表明程序中正在使用反射的位置。

配置

<mdaConfig>
  <assistants>
    <memberInfoCacheCreation/>
  </assistants>
</mdaConfig>

示例

此代码示例将激活 memberInfoCacheCreation MDA。

using System;

public class Exe
{
    public static void Main()
    {
        typeof(object).GetMethods();
    }
}

请参见

概念

使用托管调试助手诊断错误

参考

MemberInfo