GC和ARC的比较

2018-09-25  本文已影响9人  natewang

有两个区别

性能

GC 需要一套额外的系统跟踪分配的内存,分析哪些内存需要释放,相对来说就需要更多的计算。这也是为什么对性能敏感的场景不采用 GC 的原因,比如,高性能的服务端程序,资源有限的嵌入式设备(iOS 就没有采用 GC)。

ARC 由开发者自己来管理资源在什么时候释放,不需要额外的资源,所以性能没有损失。

延迟

GC 回收内存时,需要完全暂停当前程序,这会给程序带来难以预测的一个延迟期。如果需要回收的资源很多,这个延迟可能会非常大。

ARC 在资源引用为 0 时立即释放,没有不可预测的延迟。

iOS中的arc还做了函数返回值得一些释放。在编译时期完成。

http://zhang.hu/arc-vs-gc/

上一篇下一篇

猜你喜欢

热点阅读