.NET垃圾回收机制是如何实现并优化长尾对象生命周期管理的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2270个文字,预计阅读时间需要10分钟。
一、先了解必备的知识: + 管理与非管理内存 + 简单理解: + 管理内存:可辅助GC释放内存的对象(描述要点) + 非管理内存:需手动释放资源的对象(实现方式)
二、描述要点: + 管理内存: - 可借用GC释放的内存对象 - 例如:string、array等 + 非管理内存: - 必须手动使用Dispose释放资源 - 实现方式:实现IDisposable接口
一、先了解下必备的知识前提
内存中的托管与非托管,可简单理解为:
托管:可借助GC从内存中释放的数据对象(以下要描述的内容点)
非托管:必须手工借助Dispose释放资源(实现自IDisposable)的对象
内存中有栈和堆的概念区分,仅简单说明:
栈:先进后出 的特点(这里不再详细阐述)
堆:存放数据对象实例的内存空间(以下要描述的内容点)
二、.Net GC的简单描述
GC垃圾回收是对于内存堆的处理过程。
当一个应用程序进程创建时,会为此应用程序在物理内存堆中分配一块虚拟的连续性内存空间,以供应用程序后续运行时存放产生的数据对象实例。
GC是一个独立的进程,用来自动维护管理内存堆中的空间分配和释放。它通过一个或多个线程进行垃圾回收,默认启用后台线程垃圾回收。
本文共计2270个文字,预计阅读时间需要10分钟。
一、先了解必备的知识: + 管理与非管理内存 + 简单理解: + 管理内存:可辅助GC释放内存的对象(描述要点) + 非管理内存:需手动释放资源的对象(实现方式)
二、描述要点: + 管理内存: - 可借用GC释放的内存对象 - 例如:string、array等 + 非管理内存: - 必须手动使用Dispose释放资源 - 实现方式:实现IDisposable接口
一、先了解下必备的知识前提
内存中的托管与非托管,可简单理解为:
托管:可借助GC从内存中释放的数据对象(以下要描述的内容点)
非托管:必须手工借助Dispose释放资源(实现自IDisposable)的对象
内存中有栈和堆的概念区分,仅简单说明:
栈:先进后出 的特点(这里不再详细阐述)
堆:存放数据对象实例的内存空间(以下要描述的内容点)
二、.Net GC的简单描述
GC垃圾回收是对于内存堆的处理过程。
当一个应用程序进程创建时,会为此应用程序在物理内存堆中分配一块虚拟的连续性内存空间,以供应用程序后续运行时存放产生的数据对象实例。
GC是一个独立的进程,用来自动维护管理内存堆中的空间分配和释放。它通过一个或多个线程进行垃圾回收,默认启用后台线程垃圾回收。

