
CLR via C# 读书笔记
璃殇Yiyi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
垃圾回收的算法与实现(一)三类基本算法
GC 要做两件事 1. 找到内存空间里的垃圾 2. 回收垃圾,让程序员能再次利用这部分空间 主要有三大类算法其他都是扩展 GC 标记- 清除算法 引用计数法 GC 复制算法 GC 标记- 清除算法 简单描述:分为标记阶段和清楚阶段。标记阶段遍历堆(根的直接引用 然后递归)为所有的活动对象打上标记。清楚阶段(从堆的开始到结束遍历每一个对象)如果是已经标记的,设置为未标记,未标记的连接到空闲链表(用作以后的分配),如果有连续的分块则合并。 如何分配:遍历空闲链表根据策略选择合适的对象(例如Fir原创 2020-07-08 17:59:07 · 333 阅读 · 0 评论 -
C#静态类
static 关键字定义不可实例化的类。该关键字只能用于类,不能应用于结构(值类型) 静态类必须直接从基类的System.Object派生,从其他任何基类派生都没有意义。继承只试用于对象,但静态类不能实例化。 静态类不能实现任何接口,这是因为只有使用类的实例时,才可调用类的接口方法。 静态类只能定义静态成员,任何实例成员都会导致编译器报错。 静态类不能作为字段、方法参数或局部变量使用。 ...原创 2020-07-18 11:26:30 · 548 阅读 · 0 评论 -
C#类
所有类型都从System.Object派生(显式,隐式) 所有对象都要用new操作符创建。 new 操作符做的事情 计算类型及其所有基类(一直到System.Object)中定义的所有字段需要的字节所,还有“类型对象指针”和同步块索引的字节数。 从托管堆中分配类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零。 初始化对象的“类型对象指针”和“同步块索引”成员。 调用类型的实例构造器。(一直到S..原创 2020-07-18 11:04:16 · 121 阅读 · 0 评论 -
C#类成员的可访问性
private 成员只能由定义类型或任何嵌套类型中的方法访问 protected 成员只能由定义类型,任何嵌套类型或者不管在什么程序集中的派生类型中的方法访问 internal 成员只能由定义程序集中的方法访问 protected internal 成员可由任何嵌套类型,任何派生类型(不论程序集),定义程序集中的任何方法访问 public 成员可由任何程序集的任何方法访问 ...原创 2020-07-18 11:12:48 · 445 阅读 · 0 评论 -
CLR的GC
CLR的GC是基于代的垃圾回收器。 主要由以下几部分构成: 标记清除算法 压缩 代 标记清楚算法:https://blog.youkuaiyun.com/qq_42127428/article/details/107208628 压缩:在清楚阶段,把所有的活跃对象放到堆的开始端,并修改引用。 代: 对象越新,生存期越短。 对象越老,生存期越长。 回收堆的一部分,速度快于回收整个堆。 CLR的GC一共有3代(0,1,2) 新创建的未经过GC的对象在第0代。第0代经过GC活下来的进入第1代,第1代经过G原创 2020-07-09 17:35:48 · 376 阅读 · 0 评论 -
类的类型转换 is as (强制转换)
括号强制转换 Employee e = (Employee) o; 如果 o 不是Employee类型或者由Employee派生的类型 就会报 InvalidCastException错误。 is 判断对象是否属于某个类或他的派生类 Object o = new Object(); bool b1 = (o is Object) ; //b1=false bool b2 ...原创 2020-05-06 11:23:28 · 775 阅读 · 0 评论