微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – 了解Windows中的AppDomains

我想更好地了解appDomains.据我所知,Windows一个进程中运行所有应用程序.每个应用程序都封装在它自己的对象中,该对象位于此进程中.此对象还包含一些无法共享的全局变量.进程中的所有对象都不能彼此共享任何数据.我理解的appDomain是一个位于windows进程中的特殊对象.它所做的只是保留对分配给它的所有程序集的引用.如果有人可以详细说明或纠正我,如果我错了.任何好的资源也都可以.

解决方法

听起来这里发生的事情是,你在AppNet中的概念与.Net中的实现相混淆.

让我们先从概念开始.您可以在概念上将其视为与线程或进程相同的事物.启动过程相当昂贵,但在各个进程拥有的内存之间提供高度保护/分离.线程启动起来相当便宜,但对跨线程内存访问的保护较少. AppDomain本质上为线程带来了一些进程级保护.

你可以用这个概念做一些有趣的事情.例如,进程不限于单个AppDomain,因此您可以让多个应用程序共享一个进程,并且仍然可以确定这两个应用程序都不会干扰或崩溃另一个进程.但主要原因与实施有关.

正在管理的.Net语言采用内存模型设计,以便管理员可以确定应用程序外部的任何内容都不会不恰当地干扰应用程序的内存.它们也是使用单独的线程进行垃圾收集而设计的,这导致我们将应用程序作为一个进程中的一个线程运行.即使您只使用一个线程,也可以启动更多,或加载其他程序集.那么,AppDomain的目的是在进程中封装你的应用程序(及其内存).它可以实现为保持对程序集的引用的对象,但这与概念是分开的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐