700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > CLR 基本概念理解

CLR 基本概念理解

时间:2019-06-23 06:25:03

相关推荐

CLR 基本概念理解

AppDomain

AppDomain可以视为一种轻量级进程,AppDomain可以像进程一样独立加载Assembly。一个Windows进程可以包含多个AppDomain。但是与进程不同的是,进程与线程有隶属关系,但是,AppDomain和进程之间是正交的,他们没有隶属关系。例如,一个进程存在两个AppDomain:ADA和ADB,对象A来自ADA,对象B来自ADB,如果A的某个方法调用了B的方法,这两个方法会在同一个线程中执行。

使用AppDomain的好处

创建AppDomain所需要的系统资源比创建一个Windows进程要少;

同一个Windows进程内的AppDomain之间可以共享资源,如地址空间、线程、CLR等等;

Notice:

当AppDomain加载了某个Assembly后,就不能再将它从AppDomain中卸载掉,除非将整个AppDomain卸载,但是卸载AppDomain会产生非常严重的后果。

AppDomain的孤立性

1.

2.

3.

Host and Hosting

CLR并没有和操作系统集成,进程创建时必须由自己完成加载CLR的操作。加载CLR是由运行库宿主(Runtime Host)来完成的,Host的非托管代码部分负责CLR的加载、配置以及将当前线程转交给托管代码,CLR加载完成后,Host还要负责处理未捕获的异常等任务。一个CLR宿主与操作系统,以及CLR的关系如下图所示。

不同的运行库宿主将会影响应用程序的性能,还可以定义应用程序可用的功能。微软预提供的Runtime Host包括:

Console和WinForm 运行库宿主:执行的程序集在默认的AppDomain中加载,隐式加载的程序集被加载到与引用程序集所在的同一个AppDomain中,这类应用程序无需使用除默认AppDomain之外的域;运行库宿主:为每一个Web应用程序创建一个AppDomain;Microsoft IE运行库宿主:默认情况下,这个Host为每一个被访问的Web站点创建一个AppDomain,这样可以允许每个站点使用不同的安全级别;SQL Server 运行库宿主:允许数据库的查询请求使用IL代码编写;

弱引用

在应用程序执行期间,每个对象在任意时刻要么是活动的,也就是有引用指向这个对象;要么就是非活动的,也就是没有引用指向这个对象,也就不能再访问这个对象了。为了满足一些应用程序(比如缓存等)的需要,对象还可以有第三种中间状态,如果对象处于这样的状态,应用程序还可以访问这个对象,GC也可以随时释放它。要使对象处于这样的状态就需要使用弱引用(weak reference)来引用对象。使用弱应用引用的对象就既可以被应用程序访问,又可以被GC回收。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
ArcSDE基本概念理解

ArcSDE基本概念理解

2019-02-20

基本概念的理解

基本概念的理解

2022-09-01

WM基本概念理解

WM基本概念理解

2019-05-10

【es】基本概念理解

【es】基本概念理解

2024-01-12