背景
C 语言的时代, 基本上是是通过手写 malloc 、free 手动管理内存, 随着各个平台的发展, 内存管理方式采用的是 ARC 和 GC
定义
ARC : Automatic Reference Counting 引用计数
GC: Garbage Collection 垃圾收集
ARC 的特点是: 对象被引用时, 引用计数加1, 对象被释放时, 引用计数减1, 如果引用计数为0, 销毁对象
GC 的特点是: 申请对象不需要手动释放, 系统会定时扫描无用的对象
ARC 由开发者管理资源释放时机, 不需要而外的资源
区别
性能
GC 需要系统跟踪分配的内存, 分析哪些内存需要释放, 需要更多的计算
延迟
GC 回收内存, 完全暂停当前程序, 会有延迟期, 如果回收的资源很多, 这个延迟时间会非常长
ARC 在引用计数为0 的时候释放, 基本上没有延迟
GC 为啥还会被广泛采用
不需要开发者管理内存, 降低编程难度, 减少内存管理相关的 bug:
- 野指针
- 重复释放内存
- 内存泄漏
网友评论