首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

用 Assembly.Load(内存储器流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出

2013-01-11 
用 Assembly.Load(内存流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退

用 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.Load(内存储器流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出
[解决办法]
无论如何,程序加载了大量DLL后,肯定会升高内存。

热点排行