美文网首页
iOS内存的分配和优化

iOS内存的分配和优化

作者: 我要当个程序员 | 来源:发表于2020-09-09 16:51 被阅读0次

1. 用到的软硬件

  • Macbook Air
  • macOS Mojave 10.14.6
  • Xcode 11.3.1
  • Object-C(编程语言)

2. 新建一个项目

3. 问题 & 假设 & 验证

  • 任意一个空类占用的内存都相同吗?
  • 一个类占用的内存会根据你的成员属性多少增加吗?
  • iOS会优化我们的内存结构吗?

任意一个空类占用的内存都相同吗?
这里我们用NSObject和UIViewContrller来做对比,很明显是不一样的

NSObject应该分配内存大小:8 - 实际分配内存大小:16
UIViewContrller应该分配内存大小:848 - 实际分配内存大小:848

一个类占用的内存会根据你的成员属性多少增加吗?
这里在我们创建好的NSObject.h中添加2个成员属性,所以很显然是会增加的。

@property(nonatomic,strong)NSString *name;
@property(nonatomic,strong)NSString *hobbit;
NSObject应该分配内存大小:24 - 实际分配内存大小:32

iOS会优化我们的内存结构吗
前提,我们要知道在苹果设备内存地址中,以最大8bit为大小来储存数据,首先我们在我们的NSObject代码和ViewController中分别加上如下代码,这里可以看出我们的18和180两个int为4字节的合并成一个8字节的单元储存起来,由此可见,我们的iOS会优化我们的系统内存。

@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)int age;
@property(nonatomic,assign)int height;
Person *p = [[Person alloc] init];
p.name = @"小黑";
p.age = 18;
p.height = 180;
(lldb) x/4xg p
0x600001796240: 0x000000010f0c17a0 0x000000b400000012
0x600001796250: 0x000000010f0bf020 0x0000000000000000
(lldb) po 0x000000010f0bf020
小黑

(lldb) po 0x000000b400000012
773094113298

(lldb) po 0x000000b4
180

(lldb) po 0x0000012
18

相关文章

网友评论

      本文标题:iOS内存的分配和优化

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