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包括:

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

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

转载于:https://www.cnblogs.com/whyandinside/archive/2009/09/26/1574398.html

CLR 基本概念理解相关推荐

  1. 深度学习中IU、IoU(Intersection over Union)的概念理解以及python程序实现

    from: 深度学习中IU.IoU(Intersection over Union)的概念理解以及python程序实现 IoU(Intersection over Union) Intersectio ...

  2. 高性能计算中并行的概念理解

    高性能计算中并行的概念理解 分类: 并行计算高性能计算HPC - General2011-11-09 22:54 932人阅读 评论(0) 收藏 举报 编译器编程parallel优化formsvect ...

  3. 目标检测基本概念理解之IoU(交并比)以及Python代码实现

    目标检测基本概念理解之IoU(交并比) 交并比理解 Python代码实现 计算IoU,矩形框的坐标形式为xyxy 计算IoU,矩形框的坐标形式为xywh 交并比理解 在检测任务中,使用交并比(Inte ...

  4. Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享

    HDFS是什么? HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统.它是谷歌的GFS提出之后出现的另外一种文件系统.它有一定高度的容错 ...

  5. muck数据的概念理解

    muck数据的概念理解 所谓muck表示"模仿","假的":也可翻译为mock-test. 很多项目案例的讲解中,经常会提及muck数据.muck对象.muck ...

  6. 事件与委托的一点概念理解

    事件与委托的一点概念理解 早就接触过delegate和event,但是始终是一知半解,今天刚好有机会就好好研究一下! Delegate 顾名思义就是委托,委托的意思就是麻烦别人帮我干些事情.比如,我要 ...

  7. 目标检测中IoU(Intersection over Union)的概念理解

    参考博客 深度学习中IU.IoU(Intersection over Union)的概念理解以及python程序实现 一.IoU(交并比)概念 Intersection over Union,是一种测 ...

  8. C/C++中宏概念理解

    C/C++中宏概念理解 C/C++中宏概念理解 宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为"预处理器"的模 ...

  9. DSF学习1_Dubbo详解(一)分布式服务框架的概念理解

    Dubbo分布式服务框架的概念理解 Dubbo是是一个高性能,基于Java的RPC框架,由阿里巴巴开源.一个分布式的服务框架.可以实现SOA(面向服务的架构)架构. Dubbo使用的公司:京东.当当. ...

最新文章

  1. 图像处理:二维傅里叶变化的平移性_matlab实现
  2. scrapy-splash抓取动态数据例子三
  3. 实现根据id查询房源数据的dubbo服务
  4. 一个web版的计算器
  5. spring整合hibernate出现NoClassDefFoundError: org/apache/commons/collections/map/LRUMap
  6. 十进制转任意进制-数论
  7. tomcat9无法登陆控制界面
  8. MySQL数据库酒店客房管理系统(含MySQL源码) 结课作业 做的不是很好
  9. 全球定位经纬度的方法现在是GPS等系统定位,以前是指南针罗盘六分仪
  10. java mp3合并_java如何实现把两首MP3一系列的帧进行合并
  11. Linux通过黑、白名单限制IP登录
  12. commitLint和husky实现代码提交校验
  13. 【Basic】SVM(支持向量机)分类算法
  14. 到新公司上班一个礼拜的感受
  15. 携程将推出“3+2 ”工作模式,一周三天到岗两天在家办公,近六成员工强烈支持...
  16. 异地智能组网怎么实现的?
  17. WinForm模拟苹果手机计算器
  18. 几种炫酷的canvas动态背景特效
  19. termux基本使用教程
  20. linux下三个好用的终端分屏工具

热门文章

  1. kinect深度距离误差_Kinect 深度测量原理
  2. 2021年春季学期-信号与系统-第十一次作业参考答案-第六小题
  3. 关于召开全国大学生智能车竞赛--百度智慧交通项目 培训通知(华中站)
  4. 智能车技术与实践_ROS入门
  5. 第十五届全国大学生智能车安徽赛区参赛须知和竞赛日程安排
  6. 检测不到信号,是加点噪声?还是滤除噪声?
  7. python的认识_理解 Python 中的 *args 和 **kwargs
  8. docker 启动petalinux镜像脚本
  9. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据
  10. linux 32位redis安装,CentOS 5.5 32位上安装Redis 2.6报错解决