.NET运行时与公共语言基础结构深度解析
一、.NET垃圾回收器
1.1 标记清除算法
.NET垃圾回收器采用标记清除算法。在每次垃圾回收执行时,它会标记那些需要释放的对象,并将剩余的对象紧凑排列,消除它们之间的“脏”空间。这种压缩方式填充释放对象留下的空间,往往能使新对象的实例化速度更快(相较于非托管代码),因为无需在内存中搜索新分配的空间。同时,由于更多对象位于同一页面,减少了分页的可能性,从而提高了性能。
1.2 资源考虑
垃圾回收器会考虑机器上的资源以及执行时对这些资源的需求。例如,如果计算机上的内存大部分未被使用,垃圾回收器不太可能运行并花费时间清理这些资源,这是基于垃圾回收的平台和语言很少采用的优化方式。
二、类型安全
2.1 类型检查的优势
运行时提供的关键优势之一是类型转换检查,即类型检查。通过类型检查,运行时可防止程序员无意中引入可能导致缓冲区溢出漏洞的无效强制类型转换。此类漏洞是入侵计算机系统最常见的手段之一,运行时自动防止这些漏洞是一项重大优势。
2.2 类型检查的保证
- 变量和数据类型匹配 :变量及其引用的数据都有类型,且变量的类型与它引用的数据兼容。
- 局部类型分析 :可以在不分析使用该类型的所有代码的情况下,局部分析类型,以确定执行该类型成员所需的权限。
- 方法和数据访问规则 :每个类型都有编译时定义的一组方法和包含的数据,运行时会强制执行关于哪些
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



