美文网首页
OC的内存管理

OC的内存管理

作者: 风云再现_c64a | 来源:发表于2019-09-26 17:52 被阅读0次

OC的内存管理分为MRC和ARC

MRC

手动引用计数,在iOS5.0之前使用的都是手动引用计数,遵循黄金管理法则,谁创建谁释放,通过alloc,new,copy创建的对象,要调用release,对一个对象retain操作的时候,也要调用release,当一个对象作为函数返回值返回的时候要调用autorelease。当一个对象调用autorelease操作的时候会被添加到最近的自动释放池当中,当一个自动释放池在销毁的时候会给它当中存储的对象统一发送一次release消息。

ARC

自动引用计数,通过LLVM编译器和Runtime共同协作管理内存。共有三种管理方式

1.TaggedPointer

iOS用于优化NSNumber,NSDate,NSString等小对象的存储,将对象指针拆分,一部分保留数据,一部分作特殊标。不够存数据时,会动态分配内存进行存储,维护引用计数,指针存储对象地址值。它里面不存在isa指针,所以严格意义上来说TaggedPointer指向的变量不是一个对象。在进行方法调用的时候会通过特殊标记直接去类对象中查找方法,不会使用isa指针查找的方式。

2.NONPOINTER_ISA(64位架构下iOS应用程序)

因为对象的地址有30多位就够了,所以里面存储了当前对象类对象的指针地址、当前对象是否有使用到C++方面的内容、当前对象是否有关联对象。

储存内存管理相关,是否内存管理数据过大,过大或用sidetable储存、是否正在进行dealloc操作、是否有相应的弱引用指针

3.散列表方式

SideTables()结构

OC的内存管理

Spinlock_t是“忙等”的锁,适用于轻量访问。

另外散列表中使用了分离锁的概念,目的是为了提高访问效率。

相关文章

  • 内存管理

    一.内存基本介绍 1、OC内存管理的基本概念 2、OC内存管理的范围​管理范围:管理任何继承自NSObject的对...

  • 内存管理

    目录一、内存分区 1、RAM和ROM 2、内存的五大分区二、内存管理 1、OC内存管理是指什么?OC内存管理的本质...

  • OC的内存管理

    1、OC的内存管理 OC是通过引用计数进行内存管理的,其核心思想遵循“谁创建谁释放;谁引用谁管理”。 OC的内存管...

  • Lesson 0-1 Objective-C basic

    6.OC 手动内存管理 OC 内存管理原则: 只要使用 alloc, new, copy, mutableCopy...

  • iOS之从MRC到ARC内存管理详解

    概述 在iOS中开发中,我们或多或少都听说过内存管理。iOS的内存管理一般指的是OC对象的内存管理,因为OC对象分...

  • iOS五大块知识总结之内存管理

    1.1 管理的原因 只有OC对象才需要管理内存,非OC对象(如:char、int、folat)则不需要管理内存的本...

  • iOS 中堆和栈的区别以及冒泡排序

    在引入堆和栈之前,先要知道,iOS中的内存管理范围: OC对象需要进行内存管理,非oc对象不需要进行内存管理,比如...

  • OC的内存管理

    最近系统地复习了OC的内存管理,所以总结下. OC是通过引用计数(reference count)来管理内存.自...

  • OC关于在MRC模式下的内存管理学习

    内存管理 管理范围 任何继承NSObject的对象 只有OC对象才需要进行内存管理的本质原理 1.OC对象在堆中 ...

  • 内存管理

    内存管理的重要性。 不进行内存管理和错误的内存管理会造成以下问题。 内存泄露 悬挂指针 OC内存模型 内存管理是通...

网友评论

      本文标题:OC的内存管理

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