C#高级编程笔记之.NET体系结构
来源:互联网 发布:淘宝情报 编辑:程序博客网 时间:2024/05/23 20:08
.NET Framework的核心是CLR,在CLR控制下的代码称为托管代码。
1. 在.NET中编译分为两个阶段:
(1) 把源代码编译为IL.
(2) CLR把IL编译为平台专用代码.
2. 托管代码的优点:
(1) 平台无关性
(2) IL总是JIT编译,性能高.( 而Java总是解释性编译.)
<1> JIT一次只执行它调用的那部分代码,编译后可执行代码存储起来,下次无需重新编译。
<2> 编译的最后阶段-运行时,JIT编译器能识别不同的处理器,根据处理器的特性和其提供的指令,优化最后的可执行代码。
(3) 语言互操作性,CLS和CTS一起确保语言的互操作性。
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
- C#高级编程笔记之.NET体系结构
- c#高级编程笔记1-net体系结构
- C#高级编程读书笔记 - 第一章.Net体系结构
- C#2005 .NET3.0高级编程学习笔记———.NET体系结构
- C#高级编程(第8版)---NET体系结构
- .Net学习笔记《C#高级编程》之windows服务
- 《csharp高级编程》 学习笔记 第一章 .net 体系结构
- 《精通C#与.net高级编程》笔记-C#基础
- 《C#高级编程》笔记
- 1_C# 高级编程(第六版)学习笔记——第1章 .Net 体系结构
- C#高级编程学习笔记(ADO.NET)
- C# 高级编程 - .NET结构
- 读c#高级编程笔记
- C#高级编程 学习笔记
- C#高级编程之“反射”
- C#高级编程之“反射”
- c#高级编程之常量
- C#高级编程之C#语言
- JDK工具学习
- JDK工具学习
- Delphi XE中类成员的访问权限
- Eclipse插件安装总结
- libmatio函数说明
- C#高级编程笔记之.NET体系结构
- 静态方法
- ATL开发指南学习笔记: COM与C++的VTable(虚拟表)
- 将批处理文件注册成服务
- JVM图解
- MVC框架中的模型-视图分离问题(四) —— 五大分离原则
- 谈谈C#中的三个关键词new , virtual , override
- 积分有点难啊
- c#弹出提示框的一种方法