美文网首页
iOS之OC对象占用多少内存

iOS之OC对象占用多少内存

作者: 枫叶无处漂泊 | 来源:发表于2020-10-20 11:26 被阅读0次

NSObject对象占用多少内存空间

一个NSObject对象都会分配16byte的内存空间,通过源码可以知道:

size_t instanceSize(size_t extraBytes) {
    size_t size = alignedInstanceSize() + extraBytes;
    // CF requires all objects be at least 16 bytes.
    if (size < 16) size = 16;
    return size;
}

通过代码可以知道,苹果内存分配最小内存字节数为16 bytes.

OC对象实际使用内存空间

根据设备的cpu是64位还是32位的,

  • 64位的占用了 8 Bytes
  • 32位的使用了 4 bytes

在64位情况下,OC实例对象成员变量所占的大小,实际上是 8 字节,下面可以通过源码来验证一下:

#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj); 

Obj-C指针所指向的内存的大小,实际上是16 字节

#import <Objc/Runtime>
Class_getInstanceSize([NSObject Class])

size_t class_getInstanceSize(Class cls) {
    if (!cls) return 0;
    return cls->alignedInstanceSize();
}

对象在分配内存空间时,会进行内存对齐,所以在iOS 中,分配内存空间都是16字节的倍数。16字节是苹果设定的内存的最小单位。

相关文章

  • 探寻OC对象的本质

    iOS底层原理总结 - 探寻OC对象的本质 面试题:一个NSObject对象占用多少内存? 探寻OC对象的本质,我...

  • iOS之OC对象占用多少内存

    NSObject对象占用多少内存空间 一个NSObject对象都会分配16byte的内存空间,通过源码可以知道: ...

  • iOS | 面试基础整理 OC底层 (三)

    iOS | 面试知识整理 - OC底层 (三) 1. 一个OC对象占用多少内存 系统分配了16个字节给NSObje...

  • Objective-C对象的内存分配

    一个NSObject对象占用多少内存? 本章主要研究一个OC对象在内存中是如何布局和占用多少内存的。后面主要通过把...

  • OC对象占用内存原理 (一文彻底搞懂)

    要想真真切切看到一个OC对象占用多少内存, 实践是必不可少的. 初始OC对象占用内存 创建一个 Command L...

  • iOS 知识点回顾(一)

    目录 一个NSObject对象占用多少内存?对象的isa指针指向哪里?OC的类信息存放在哪里?iOS用什么方式实现...

  • iOS 基础知识(一)

    目录 一个NSObject对象占用多少内存?对象的isa指针指向哪里?OC的类信息存放在哪里?iOS用什么方式实现...

  • iOS中OC对象的本质

    一个OC对象在内存中如何布局?以及一个NSObject对象占用多少内存? 我们知道OC的底层语言是c/c++我们平...

  • OC 对象的总结

    1 oc对象、类的本质是什么,OC对象的内存布局是什么样子的,一个NSObject对象占用多少内存,一个自定义类的...

  • iOS 底层知识总结

    一、OC语法 1、OC对象的本质 1)一个NSObject对象占用多少内存?A:系统分配16个字节给一个NSObj...

网友评论

      本文标题:iOS之OC对象占用多少内存

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