前文回顾在上篇文章《深入理解Linux物理内存管理》中,笔者详细的为大家介绍了Linux内核如何对物理内存进行管理以及相关的一些内核数据结构。在介绍物理内存管理之前,笔者先从CPU的角度开始,介绍了三种Linux物理内存模型:FLATMEM平坦内存模型,DISCONTIGMEM非连续内存模型,SPARSEMEM稀疏内存模型。随后笔者又带大家站在一个新的视角上,把物理内存看做成一个整体,从CPU访问物理内存以及CPU与物理内存的相对位置变化的角度介绍了两种物理内存架构:一致性内存访问UMA架构,非一致性内存访问NUMA架构。在NUMA架构下,只有DISCONTIGMEM非连续内存模型和SPARS
前文回顾在上篇文章《深入理解Linux物理内存管理》中,笔者详细的为大家介绍了Linux内核如何对物理内存进行管理以及相关的一些内核数据结构。在介绍物理内存管理之前,笔者先从CPU的角度开始,介绍了三种Linux物理内存模型:FLATMEM平坦内存模型,DISCONTIGMEM非连续内存模型,SPARSEMEM稀疏内存模型。随后笔者又带大家站在一个新的视角上,把物理内存看做成一个整体,从CPU访问物理内存以及CPU与物理内存的相对位置变化的角度介绍了两种物理内存架构:一致性内存访问UMA架构,非一致性内存访问NUMA架构。在NUMA架构下,只有DISCONTIGMEM非连续内存模型和SPARS
1.准备源码程序源码分析alloc&init&new的流程,使用从github上下载的LGCooci的源码https://github.com/LGCooci/KCCbjc4_debug。因为设备限制,我是基于818的源码进行学习。从github下载完成后,在KCObjcBuild所在的目录新建一个OC类命名为Person,Person类中什么都不写。在main.m中写入如下代码:#import"Person.h"Person*p1=[Personalloc];Person*p2=[p1init];Person*p3=[p1init];NSLog(@"%@-%p-%p",p1,p1,&p1);
1.准备源码程序源码分析alloc&init&new的流程,使用从github上下载的LGCooci的源码https://github.com/LGCooci/KCCbjc4_debug。因为设备限制,我是基于818的源码进行学习。从github下载完成后,在KCObjcBuild所在的目录新建一个OC类命名为Person,Person类中什么都不写。在main.m中写入如下代码:#import"Person.h"Person*p1=[Personalloc];Person*p2=[p1init];Person*p3=[p1init];NSLog(@"%@-%p-%p",p1,p1,&p1);