3.7k 3 分钟

# Diciotnary public class Dictionary<Tkey, TValue> { private int[] buckets; private Entry[] entries; private int count; private int version; private int freeList; private int freeCount; private IEqualityComparer<Tkey> comparer; public Dictionary() {...
305 1 分钟

# 同步块索引 SyncLockIndex 顾名思义,和同步有关,.Net 框架再设计的时候考虑到线程同步的问题,CLR 采用了一种折中的办法,就是实际只为每个堆内对象分配一个同步索引,该索引中只保存一个表明数组内索引的整数。CLR 在加载时会新建一个同步块数组,当某个对象需要被同步时,CLR 会为其分配一个同步块,并且把该同步块在同步块数组中的索引加入该对象的同步块索引中。 同步块是指 CLR 维护的同步块数组中的某个元素,负责提供线程同步的操作,当某个线程拥有了某个同步块时,其他线程就在试图访问该同步块时进入等待状态。同步索引是每个堆内对象都会分配的一个字段 #...
541 1 分钟

# 定义 装箱是将值类型转换为 object 类型或由此值类型实现的任何接口类型的过程拆箱取消装箱将从对象中提取值类型装箱是隐式的;取消装箱是显式的# 装箱与拆箱内部过程 装箱 从托管堆中分配新创建的对象的内存 (值类型实际的大小 + 方法表指针 + SyncBlockIndex) 将值类型的值拷贝分配到的内存中 返回托管堆的新分配对象的地址 拆箱 首先获取托管堆中属于值类型那部分字段的地址,这一步是严格意义上的拆箱 将引用对象中的值拷贝到位于线程堆栈上的值类型实例中 # 官方文档描述 数据类型被分隔为值类型和引用类型。 值类型要么是堆栈分配,要么在结构中以内联方式分配。...
416 1 分钟

# 虚拟化 是指通过虚拟化技术将一台计算机虚拟化为多台逻辑计算机(对计算机的物力资源的抽象,实现资源的模拟,隔离和共享) # 虚拟化的分类 基于平台的虚拟化 x86或者x64位的操作系统中的CPU、内存、外设等作为资源,这种对应的虚拟化技术就是平台虚拟化。 基于操作系统的虚拟化 如果把操作系统及其提供的系统调用作为资源,那虚拟化就表现为操作系统虚拟化 # 虚拟化管理程序 Hypervisor(VMM) 一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也称VMM(Virtual Machine...