iOS之OC对象占用多少内存

2020-10-20  本文已影响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位情况下,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字节是苹果设定的内存的最小单位。

上一篇 下一篇

猜你喜欢

热点阅读