C#编译
来源:互联网 发布:otl功率放大器实验数据 编辑:程序博客网 时间:2024/06/06 05:39
CLR
CLR(公共语言运行库,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境。CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离。CLR是.NET Framework的主要执行引擎。
为了提高平台的可靠性,以及为了达到面向事务的电子商务应用所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。按照.NET的说法,在CLR监视之下运行的程序属于“托管的”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管的”(unmanaged)的代码。
CLR要求所有的资源从可操控的堆(注:在此指一种内存结构)中分配。当一个进程被初始化后,CLR保留了一个未被分配的地址空间。这一区域叫做可操控堆。在堆中保持了指向下一个将被分配给对象的堆地址的指针(NEXT)。 初始状态下,该指针是保留地址空间的基地址。一个应用使用新的操作产生对象。此操作首先检查新对象需要字节的大小是否会超出保留空间。如果对象大小合适,指向下一个地址的指针将指向堆中的这个对象,该对象的构造器被调用,新的操作返回对象的地址。当一个应用请求建立一个对象时,地址空间可能不够大。堆将发现这一点(通过将新对象的大小与NEXT指针相加,并与堆的大小进行比较),这时垃圾收集器就将被调用。在这里,CLR引入了“代”的概念。代,指堆中对象产生的先后。这样,垃圾收集器在将发生溢出时回收属于特定的“代”的对象,而不是回收堆中的所有对象。
在各种语言的编译器对源代码进行编译之后,在CLR环境中产生的是中间代码(出于兼容性与跨语言集成的考虑),其内容虽然有效,但在转化为本地代码之前它本身是不可执行的。这就是JIT编译器需要完成的工作。
IL
IL是.NET框架中中间语言(Intermediate Language)的缩写。使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言IL(Intermediate Language)的代码。
JIT
AOT
AOT编译器,英文写作Ahead-Of-Time,中文意思是提前编译,静态编译。
AOT编译器牺牲了平台无关性和代码质量,因为它们不能利用程序的动态行为,也不具有关于加载的类或类层次结构的信息。
- C#编译
- C#动态编译
- C# 动态编译
- C#代码编译过程
- C#动态编译代码
- c# cmd 编译
- 命令行编译c#
- C#编译原理
- 四则运算--C#编译版
- C#动态编译笔录
- 动态编译c#
- C#文件编译
- C#动态编译
- 命令行编译c#源程序
- c#动态编译代码
- C#动态编译
- C# 动态编译代码
- C# 编译&运行原理
- delphi中copy函数
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- NYOJ 679 贪婪的商店
- 【玩转微信公众平台之二】 账号注册
- 检查是否是子串
- C#编译
- 高并发高流量网站架构(转)
- XTU1151:Bus(DP)
- 【玩转微信公众平台之三】 基本操作
- MVC框架理解
- PHP初学习
- XTU1154:Encode
- 【玩转微信公众平台之四】 编辑模式的使用
- JS 删除字符串最后一个字符的几种方法