概述
- 内存的分配都是以内存页为单位分配的,不同的操作系统,内存页的大小不一样,IOS是16K, 其他是64K
- 为了防止内存浪费,就把内存页分成相同大小的块(Block),一个内存页叫做池(Pool)
- 在一个项目中,内存的占用不止一个内存页, 会有多个内存页,所以出现了“箱Binned”的概念,一个箱管理着多个内存页,有41种方式划分物理内存页的方式,每种以大小相同块的内存页也会有多个;
内存对齐
- 各种类型数据按照一定的规则在空间上排列,而不是按照顺序一个接一个的排放,这种就称为内存对齐
- 内存对齐是指首地址对齐,而不是说每个变量大小对齐
为什么要内存对齐
- 有些CPU可以访问任意地址上的任意数据,而有些CPU只能在特定地址访问数据,因此不同硬件平台具有差异性,这样的代码就不具有移植性,如果在编译时,将分配的内存进行对齐,这就具有平台可以移植性了
- CPU每次寻址都是要消费时间的,并且CPU 访问内存