内存管理 - ARC 和 GC 的区别

2019-01-08  本文已影响5人  小木头

背景

C 语言的时代, 基本上是是通过手写 malloc 、free 手动管理内存, 随着各个平台的发展, 内存管理方式采用的是 ARC 和 GC

定义

ARC : Automatic Reference Counting 引用计数
GC: Garbage Collection 垃圾收集

ARC 的特点是: 对象被引用时, 引用计数加1, 对象被释放时, 引用计数减1, 如果引用计数为0, 销毁对象

GC 的特点是: 申请对象不需要手动释放, 系统会定时扫描无用的对象
ARC 由开发者管理资源释放时机, 不需要而外的资源

区别

性能
GC 需要系统跟踪分配的内存, 分析哪些内存需要释放, 需要更多的计算

延迟
GC 回收内存, 完全暂停当前程序, 会有延迟期, 如果回收的资源很多, 这个延迟时间会非常长
ARC 在引用计数为0 的时候释放, 基本上没有延迟

GC 为啥还会被广泛采用
不需要开发者管理内存, 降低编程难度, 减少内存管理相关的 bug:

上一篇 下一篇

猜你喜欢

热点阅读