美文网首页
内存管理 - ARC 和 GC 的区别

内存管理 - ARC 和 GC 的区别

作者: 小木头 | 来源:发表于2019-01-08 16:30 被阅读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:

    • 野指针
    • 重复释放内存
    • 内存泄漏

    相关文章

      网友评论

          本文标题:内存管理 - ARC 和 GC 的区别

          本文链接:https://www.haomeiwen.com/subject/dscbrqtx.html