zoukankan      html  css  js  c++  java
  • C#在.NET编译执行过程

    1..NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。

    • 程序集要么是可执行的,要么是DLL
    • 程序集里的代码并不是本机代码,而是一种名称为CIL的中间语言
    • 程序集包含如下信息:
      • 程序的CIL
      • 程序中使用的类型的元数据
      • 对其他程序集引用的元数据

    2.   程序的编译过程

       程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行下面步骤:

      • 检查程序集的安全特性
      • 在内存中分配空间
      • 把程序集中的可执行代码发送给实时编译器(JIT),把其中的一部分编译成本机代码。

    程序集中的可执行代码只在需要的时候由JIT编译器进行编译,然后它就被缓存起来以备在后来的程序中执行。这就意味着不被调用的代码不会被编译成本机代码,而且被调用的代码只被执行一次。

    一旦CIL被编译成本机代码,CLR就在它运行时管理它,执行像内存释放、数组边界检查、检查参数类型、异常管理等任务。有两个重要的术语由此而生。

      • 托管代码:为.NET框架编写的代码称为托管代码,需要CLR
      • 非托管代码:不在CLR控制下运行的代码,比如Win32 C/C++ DLL,称为非托管代码

    3.编译和执行过程图

    QQ图片20140322124557

  • 相关阅读:
    dir for RequestHandler and request
    python globals和locals
    Spring AOP(通知、连接点、切点、切面)
    Elasticsearch和Head插件安装(转)
    服务发现
    全面的软件测试( 转)
    软件开发项目人员配置
    阿里云oss缩略图如何产生读取 超简单 不看后悔(转)
    Elasticsearch模糊查询
    小米Pro 安装苹果系统
  • 原文地址:https://www.cnblogs.com/smiler/p/3617396.html
Copyright © 2011-2022 走看看