我正在尝试更好地理解appDomains。 根据我的理解,Windows在一个进程中运行所有应用程序 每个应用程序封装在它自己的对象中,驻留在这个过程中。 这个对象也拥有一些不能共享的全局variables。 进程中的所有对象都不能共享任何数据。 从我的理解appDomain是一个特殊的对象,坐在Windows进程。 它所做的就是保留对所有分配给它的程序集的引用。 如果任何人都可以详细说明,或纠正我,如果我错了。 而且任何好的资源也可以做到。
.NET中的窗体上的三angular/mathexpression式
创build自我开放的文档
Windows Xperf diskio操作不会显示一个程序在性能跟踪会话期间读取的文件
System.Net.WebClient请求获取403 Forbidden,但浏览器不与Apache服务器
这听起来像是在这里发生的是,你正在混淆一个AppDomain的概念与在.Net中的实现 。
首先从概念开始。 你可以在概念上把它看作是一个线程或一个进程的同一种东西。 启动过程相当昂贵,但在各个进程拥有的内存之间提供高度的保护/分离。 线程启动相当便宜,但是对于跨线程内存访问的保护较少。 一个AppDomain基本上把一些进程级别的保护带给了线程。
用这个概念你可以做一些有趣的事情。 例如,进程不限于一个AppDomain,所以你可以有多个应用程序共享一个进程,但仍然相当肯定,任何应用程序都不会干扰或崩溃。 但主要原因与实施有关。
被管理的.Net语言被设计成一个内存模型,这样管理员就可以确定你的应用程序之外没有任何东西会不适当地干扰你的应用程序的内存。 它们也被设计为使用单独的线程进行垃圾回收,这使得我们将应用程序作为一个进程中的一个线程运行。 即使只使用一个线程,也可以启动更多,或者加载其他程序集。 那么,AppDomain的目的就是在你的程序中封装你的应用程序(和内存)。 它可以被实现为一个对象,保持对你的程序集的引用,但这是与概念分开的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。