wei*_*in8 4 .net c# reflection load
我很想知道Assembly.Load(AssemblyName)使用相同版本的程序集多次调用它的缺点是什么.第一次调用后运行时是否知道不再加载程序集?如果没有,有没有办法检测已经加载的是什么?
提前致谢.
Alo*_*aus 10
当您使用此重载时,它将仅在内存中加载一次.您可以使用Process Explorer验证它.查看加载的模块列表.每个程序集都加载到带有LoadLibrary的.NET 3.5.此外,它作为内存映射文件加载到进程中.
从.NET 4.0开始,程序集仅作为内存映射文件加载,而不是通过LoadLibrary加载,除非它是预编译的ngenned程序集.
.NET 4中的这一重大变化是因为MS在VS 2010的开发过程中发现他们的内存确实耗尽了很多.有人发现每个加载的程序集在虚拟内存中的原始大小是原始大小的两倍,因为它通过LoadLibrary加载一次,第二次作为内存映射文件加载.除非您将VMMap用于流程,否则这不容易找到.由于VS中存在大量代码,这对VS2010来说是一个主要问题,现在主要是管理.