当前位置: 首页 > 编程语言 > C#

Reflect.Emit动态类型内存爆破分享

时间:2023-04-10 13:55:04 C#

Reflect.Emit动态类型内存爆破使用C#3.5我正在尝试使用反射发射在运行时生成动态类型。我使用Microsoft的动态查询库示例创建了一个类生成器。一切正常,我的问题是100个生成的类型使内存使用量膨胀了大约25MB。这是一个完全不能接受的内存配置文件,因为最终我要支持在内存中生成数十万种类型。内存分析显示内存显然由各种System.Reflection.Emit类型和方法持有,尽管我不明白为什么。我还没有发现其他人在谈论这个,所以我希望这个社区中的某个人知道我做错了什么,或者这是否是预期的行为。下面的受控制示例:usingSystem;使用System.Collections.Generic;使用系统文本;使用System.Reflection;使用System.Reflection.Emit;namespaceSmallRelfectExample{classProgram{staticvoidMain(string[]args){inttypeCount=100;intpropCount=100;随机数=newRandom();输入dynType=null;SlimClassFactoryscf=newSlimClassFactory();for(inti=0;i