C# - 程序的执行
2016-01-07 11:20
435 查看
C#并不被编译成为能够直接在计算机上执行的二进制本地代码。与Java类似,它被编译成为中间代码(Microsoft Intermediate Language),然后通过.NET Framework的虚拟机——被称之为通用语言运行库——执行。
所有的.Net编程语言都被编译成这种被称为通用中间语言的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。如果计算机上没有安装.Net Framework,那么这些程序会弹出对话框,要求用户下载.net framework。
在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区(Buffer)中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。
内存管理方面:
1.不要过度的使用引用。当对象还存在,那么所有相关的引用对象将不会被回收。当我们操作了引用类的一些属性后,需要明确的将引用变量设置为null。以便垃圾回收器回收这些对象。
2.使用终结器(finalizer)能使工作更容易,但尽量在必要的情况下使用。终结器(finalizer)需要花费垃圾回收器的昂贵的代价,所以必须在必要的时候使用它。一个更好的方案是使用IDisposible接口来取代终结器(finalizer)。这样做会使垃圾回收器工作的更有效率。
所有的.Net编程语言都被编译成这种被称为通用中间语言的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。如果计算机上没有安装.Net Framework,那么这些程序会弹出对话框,要求用户下载.net framework。
在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区(Buffer)中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。
内存管理方面:
1.不要过度的使用引用。当对象还存在,那么所有相关的引用对象将不会被回收。当我们操作了引用类的一些属性后,需要明确的将引用变量设置为null。以便垃圾回收器回收这些对象。
2.使用终结器(finalizer)能使工作更容易,但尽量在必要的情况下使用。终结器(finalizer)需要花费垃圾回收器的昂贵的代价,所以必须在必要的时候使用它。一个更好的方案是使用IDisposible接口来取代终结器(finalizer)。这样做会使垃圾回收器工作的更有效率。
相关文章推荐
- 浅谈C#类成员的访问属性
- C# 序列化和反序列化
- C#:判断当前线程所处状态&委托
- C#中yield return用法分析
- C# Console利用mspaint打开图像并保存的方法
- C#实现在网页中根据url截图并输出到网页的方法
- C#使用iTextSharp为pdf添加文字
- 设计模式(C#版)--简单工厂模式
- C#之浏览器请求跨域
- C# 读写文件(StreamRead,StreamWrite,File,FileStream)
- C#委托的介绍
- C#文件的操作类常用方法
- C#枚举类型
- C# SaveFileDialog的用法保存文件
- C#学习笔记 任务操作
- C# Closure
- 抽象工厂模式 c#
- 获取当前系统桌面路径(C# 代码)
- 通过C#代码实现空间离散点的克里金(kriging)插值(二) 代码实现
- C#类的构造和析构