用 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后,肯定会升高内存。