标签列表
多次调用Assembly.Load(Byte[])方法时,返回的是同一个实例还是会有内存泄漏?
c#
assemblies
appdomain
assembly-resolution
4
4
当我多次使用包含相同程序集的字节数组调用Assembly.Load(Byte[])时会发生什么?
每次调用都会得到相同的程序集实例吗?
在应用程序域内加载了多个相同的程序集吗?
-
Guillaume
2
你实际上会得到一个内存泄漏。我在2006年设计了一个服务应用程序,它使用了这种方法。由于Assembly.Load()的原因,它每个星期天都需要重新启动,因为它会占用4GB的RAM和8GB的分页空间。
- Vitaly
技术上,这当然不是泄漏。然而,一个 AppDomain 中没有必要加载超过一个 Assembly 的实例——您很可能只使用了一个,所有其他实例只是挂起并消耗服务器内存。
- Vitaly
1
个回答
4
4
每次调用都会得到一个新的 Assembly 对象,请阅读
文档
,文档结尾有一条注释:
“请注意,此方法重载始终创建一个具有自己映射的新程序集对象。”
-
HasaniH
1
谢谢,我错过了小注释。
- Guillaume
回答链接
网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接
相关问题
5
调用Assembly.Load(byte())时,会触发AssemblyResolve事件。
3
调用subject.OnCompleted()会整理/调用dispose/不会泄漏内存,还是我需要自己调用IDisposable的dispose方法?
23
多次调用Assembly.Load的副作用
3
con.execute()被多次调用会有影响吗?
9
使用Assembly.Load是静态引用还是动态引用?
3
这是否是内存泄漏?
3
Assembly.Load(byte[])是如何工作的?
20
调用Assembly.Load(byte[])方法是否会触发AppDomain.AssemblyResolve事件?
6
通过Assembly.Load(byte[])加载程序集后如何调试?
9
StructureMap是代理所有实例还是在返回之前修改实例?