多次调用Assembly.Load(Byte[])方法时,返回的是同一个实例还是会有内存泄漏?

4

当我多次使用包含相同程序集的字节数组调用Assembly.Load(Byte[])时会发生什么?

每次调用都会得到相同的程序集实例吗?

在应用程序域内加载了多个相同的程序集吗?


你实际上会得到一个内存泄漏。我在2006年设计了一个服务应用程序,它使用了这种方法。由于Assembly.Load()的原因,它每个星期天都需要重新启动,因为它会占用4GB的RAM和8GB的分页空间。 - Vitaly
技术上,这当然不是泄漏。然而,一个 AppDomain 中没有必要加载超过一个 Assembly 的实例——您很可能只使用了一个,所有其他实例只是挂起并消耗服务器内存。 - Vitaly
1个回答

4
每次调用都会得到一个新的 Assembly 对象,请阅读 文档,文档结尾有一条注释:
“请注意,此方法重载始终创建一个具有自己映射的新程序集对象。”

谢谢,我错过了小注释。 - Guillaume

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接