首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net应用内存管理

.Net应用内存管理
EN

Stack Overflow用户
提问于 2014-02-11 17:45:11
回答 2查看 120关注 0票数 3

这可能是一个非常幼稚的问题,但我想知道这些内容是如何工作的:假设我们在Visual中有10个项目,其中5个使用相对路径引用外部DLL (例如Ext.dll)。

现在,当我的应用程序在客户端机器上部署运行时,Ext.dll是否会在内存中加载5次?还是只加载一次并被其他引用项目使用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-11 17:47:50

程序集只在内存中加载一次。

CLR首先检查程序集是否已在当前AppDomain中加载,如果不是按AppDomain加载程序集,则从已加载的程序集中解析符号。

当然,除非您正在手动创建另一个具有自己的程序集的AppDomain。

此外,具有相同版本的程序集不能同时加载到内存中。CLR不允许那样。但是,您可以在内存中加载同一程序集的不同版本,如果程序集被强签名,也可以加载该版本。但是在您的情况下,版本是相同的,所以CLR无论如何不会加载相同的程序集两次。

如果要在特定时间间隔检查哪些程序集已加载到内存中,则可以使用这段代码获取所有已加载的程序集:

代码语言:javascript
复制
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
票数 5
EN

Stack Overflow用户

发布于 2014-02-11 17:52:07

Clr只在内存中加载一次程序集。

备注:对于应用程序的每个实例,Clr再次加载程序集。

您可以阅读通过c#实现Clr.In第一章,您可以学习许多这些概念。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21709190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档