美文网首页
内存管理 - 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 的区别

    背景 C 语言的时代, 基本上是是通过手写 malloc 、free 手动管理内存, 随着各个平台的发展, ...

  • 垃圾回收机制与oc的ARC

    oc的垃圾回收与ARC ARC介于自动垃圾回收(GC)和手动内存管理之间。就像垃圾回收,ARC让程序员不再需要书写...

  • IOS内存管理

    内存概述 内存是用来存啥的? 内存布局 哈希表 垃圾回收(GC) IOS内存管理机制 MRC & ARC T...

  • 经典面试题14 - 垃圾回收和自动引用计数

    问题自动引用计数(ARC) 和 垃圾回收(GC)有什么区别? 解答在讨论自动引用计数(ARC) 和 垃圾回收(GC...

  • iOS高频面试题(持续更新)

    1、ARC和MRC管理内存有什么不同,iOS中内存管理的原理 2、assign和weak的区别,解释一下stron...

  • iOS Objective-C底层 part3:live^ARC

    1. 概念 首先,ARC和GC是两码事,ARC是编译时编译器“帮我们”插入了原本需要我们自己手写的内存管理代码,而...

  • OC中内存管理

    在OC中内存管理MRC手动内存管理和ARC自动内存管理,ARC是从iOS 4.0开始,在iOS 4.0之前...

  • iOS 百度(百度新闻)面试题

    一面 1.ARC和MRC有什么区别,ARC为什么可以自动管理内存2.为什么用copy?深拷贝和浅拷贝的区别3.we...

  • iOS夯实:ARC时代的内存管理

    iOS夯实:ARC时代的内存管理 iOS夯实:ARC时代的内存管理

  • JVM性能优化

    常见面试题:1)内存泄漏与内存溢出的区别(2)young gc会有stw吗?(3)major gc和full gc...

网友评论

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

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