C# 垃圾回收的基础

来源:互联网 发布:muscletech淘宝真假 编辑:程序博客网 时间:2024/06/05 21:13

C# 垃圾回收的基础知识:

  • CLR(Common Language Runtime,公共语言运行库)是一个支持多种编程语言运行时的环境。它的核型功能是内存管理、程序集加载、安全性、异常处理和线程同步。

优点是跨语言集成的能力:CLR包含丰富的语言特性集,保证各种语言特性的兼容性。

  • 托管堆(Managed heap):CLR初始化垃圾回收器时分配的内存,用于存储和管理对象。在托管堆中的数据叫做托管数据,非托管数据有文件句柄阿
  • 托管代码和非托管代码(managed code and no-managed code )

         托管代码是MS的一种中间语言,主要作用是.NET framework CLR在执行代码前先编译源代码成托管代码。 托管代码是基于.net元数据格式的代码,运行于.net平台之上的。

它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。 源代码执行要经过两步:

          1.源代码编译为托管代码;(所以源代码可以有很多种,如VB,C#,J#)
          2.托管代码编译为microsoft系统的.net平台专用文件(如类库、可执行文件等)。
         非托管代码是指,在公共语言运行库环境的外部,由操作系统直接执行的代码。 例如COM 组件、ActiveX 接口和 Win32 API 函数都是非托管代码的示例。

     

         托管代码可以使用托管数据和非托管数据。

  •  垃圾回收的阶段:

            标记阶段:找到并创建所有活动对象的列表

            重定位阶段:用于更新对将要压缩的对象的引用

            压缩阶段:用于回收死对象占用的空间,并压缩幸存的对象。


0 0
原创粉丝点击