C# 中的对象生命周期与垃圾回收机制
1. C# 继承特性概述
C# 支持单实现继承,不过仅适用于类或引用类型记录,无法从结构体派生。接口可以声明多个基接口,一个类也能够实现多个接口。从派生类型到基类型存在隐式引用转换,泛型接口和委托还能通过协变或逆变提供额外的隐式引用转换。所有类型都派生自 System.Object ,这确保了所有变量都具备某些标准成员。
2. .NET 内存管理与垃圾回收
- 自动内存管理 :.NET 的托管执行模型使得运行时能够自动处理应用程序的大部分内存管理工作。使用
new关键字创建对象时,无需显式释放这些对象所占用的内存。运行时提供了垃圾回收器(GC),它能自动检测对象何时不再使用,并回收其占用的内存以供新对象使用。 - 垃圾回收的必要性 :尽管 GC 旨在高效管理内存,但某些使用模式可能导致性能问题,甚至使 GC 失效。对于长时间运行的进程而言,理解 GC 的工作原理尤为重要,因为短生命周期的进程或许能够容忍少量的内存泄漏。
3. 堆与对象存储
CLR 维护着一个堆,为那些生命周期由 GC 管理的对象和值提供内存。每次使用 new 关键字创建类的实例或新数组对象时,CLR 会分配一个新的堆块,而 GC 决定何时释放该堆块。
堆块包含对象的所有非静态字段,若为数组则包含所有元素。CLR 还会添加一个程序不可直接见的头部,其中包含指向描述对象类型结构的指针,用于支持依赖对象实际
超级会员免费看
订阅专栏 解锁全文
1065

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



