C#高级编程笔记之.NET体系结构

 .NET Framework的核心是CLR,CLR控制下的代码称为托管代码。

1. .NET中编译分为两个阶段:

(1) 把源代码编译为IL.  

(2) CLRIL编译为平台专用代码.

 

2. 托管代码的优点:

(1) 平台无关性

(2) IL总是JIT编译,性能高.( Java总是解释性编译.)

<1> JIT一次只执行它调用的那部分代码,编译后可执行代码存储起来,下次无需重新编译。

<2> 编译的最后阶段-运行时,JIT编译器能识别不同的处理器,根据处理器的特性和其提供的指令,优化最后的可执行代码。

(3) 语言互操作性,CLSCTS一起确保语言的互操作性。

 

3.垃圾收集

三种方式收集垃圾:

(1)       手工方式,如C++,但容易造成内存泄漏。

(2)       对像引用计数,如COM,但需客户通知完成内存使用,甚至可能COM对象存在自己进程中,从不被系统删除。

(3)       .NET使用垃圾收集器,当检测到给定进程的托管堆已满,就调用之。删除不再被引用的对象。

4. 进程、线程、应用程序域

<1> 并发是指多个事件在宏观上同时执行,微观上交替执行。

<2> 进程是指在系统中独立运行并作为资源分配的基本单位。

因为要并发,所以引入进程,因为并发,所以进程要不断的创建、撤消、切换,又因为进程是资源的拥有者,所以在这个过程中,系统必为之付出较大的时空开销,因此引入线程。

<3> 线程是进程中的一个轻型实体,是被系统调度和分派的基本单位。

引入线程后,把线程作为被系统调度和分派的基本单位,而进程作为拥有资源的基本单位。

进程可以并发,线程也可以并发。同一进程中的线程切换不引起进程间的切换,这是效率提高的关键。

<4>应用程序域.

.net出现以前,一个进程下,只能运行一个应用程序,因为进程是相互独立的,所以这造成不同的应用程序互访的不便。而现在,通过CLR提供应用程序之间的隔离,在单个进程中能运行几个应用程序域(节省了开销),每个应用程序域基本对应一个应用程序。

应用程序域和线程之间不具有一对一的相关性,在单个应用程序域中可以执行几个线程,而且特定线程并不局限在单个应用程序域内。

 

转自:http://www.cnblogs.com/vasty/archive/2008/11/11/1331294.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值