加载中...
引用计数是一种内存管理技术,为每个对象记录当前指向它的引用数量,当计数降为零时立即回收该对象所占内存。它实现简单、回收及时,是许多语言和系统管理资源生命周期的基础手段。

| 中文名 | 引用计数 |
| 外文名 | Reference Counting |
| 所属领域 | 内存管理 |
| 关键机制 | 计数增减 |
| 主要缺陷 | 循环引用 |
引用计数是一种通过统计对象被引用次数来管理其生命周期的内存管理技术。每当有新引用指向对象计数加一,引用失效时计数减一,当计数归零便表明无人再使用,可立即回收。
引用计数是垃圾回收的一大流派,与追踪式垃圾回收相对。它的最大优点是回收时机确定且及时:对象一旦不再被引用便立刻释放,内存占用平稳,不会出现追踪式回收那种周期性的停顿。Python、Swift、以及 C++ 的智能指针都采用引用计数管理对象或资源。
引用计数适用于需要确定性资源释放的场景,如文件句柄、网络连接、图形资源的管理。C++ 的智能指针以引用计数自动管理堆对象;Swift 通过自动引用计数在编译期插入增减指令;许多操作系统内核也用它管理内存页和内核对象的共享。
问:引用计数最大的缺陷是什么?答:无法自动处理循环引用。两个对象相互引用时计数永远不为零,导致内存泄漏,通常需要引入弱引用来打破循环。
问:引用计数比追踪式垃圾回收更快吗?答:各有优劣。引用计数回收及时、无长停顿,但每次引用变动都有开销且多线程需加锁;追踪式回收平摊开销低但可能带来暂停。

| 中文名 | 引用计数 |
| 外文名 | Reference Counting |
| 所属领域 | 内存管理 |
| 关键机制 | 计数增减 |
| 主要缺陷 | 循环引用 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧