runtime那点事(1)使用runtime 机制来查询个单个 对象占用内存的大小

如何使用runtime 机制来查询个单个 对象占用内存的大小呢

我们可以使用两种方法

  1. 导入 使用 class_getInstanceSize() 方法
  2. 导入 使用 malloc_size() 方法

具体代码如下

NSObject * obj = [[NSObject alloc]init];

NSLog(@"class size is %zd",class_getInstanceSize([NSObject class]));

NSLog(@"class size is with malloc %zd",malloc_size((__bridge const void *)(obj)));

有意思的是 最终获取的结果完全不一样

使用class_getInstanceSize 获得的结果发现是 8个字节
而使用malloc_size 获得的结果是16个字节

最后查询源码解惑 runtime 中 class_getInstanceSize 指的是获得对象内所有元素的个内存大小
而malloc_size 获取的是整个指针的内存大小 还是有区别的

补充一下 alloc 方法底层中 如果分配的内存必须大于16 所以NSObject 对象的内存中的大小为16个字节

你可能感兴趣的:(runtime那点事(1)使用runtime 机制来查询个单个 对象占用内存的大小)