用 Assembly.Load(内存流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出?
用 Assembly.Load(内存流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出?
我的猜想依据是:
1、Assembly.LoadFile(DLL文件路径)会锁定该文件,那Assembly.Load(内存流)会锁定该内存流?
2、我的程序当加载大量DLL后,内存占用确实很大。
希望懂这方面的兄弟给分析一下。。
这是加载部分的代码:
if (!File.Exists(fullPath))
{
throw new ArgumentException(fullPath + " error");
}
byte[] fsContent;
using (FileStream fs = File.OpenRead(fullPath))
{
fsContent = new byte[fs.Length];
fs.Read(fsContent, 0, fsContent.Length);
}
Assembly assembly = Assembly.Load(fsContent);
////使用loadFrom会导致bothSay 抛出转换异常。
//Assembly assembly = Assembly.LoadFrom(fullPath);
assemblies.Add(assembly.GetName().Name, assembly);
------解决方案--------------------你试试用Assembly.LoadFile(DLL文件路径),加载大量DLL后,内存一样很大。
------解决方案-------------------- 反射可以解决的吧!
------解决方案--------------------------解决方案--------------------无论如何,程序加载了大量DLL后,肯定会升高内存。