美文网首页
Class *anObject = [[Class alloc]

Class *anObject = [[Class alloc]

作者: 稻草田 | 来源:发表于2016-07-15 20:33 被阅读0次
  1. What does alloc do?
    It allocates a chunk of memory to hold the object and returns the pointer.
    alloc 给对象分配了一块内存,让对象不释放,并且把地址返回给指针。
    光有alloc分配了一块地址是不够的,对象还没有真正被创建。
  2. What does init do?
    init才真正地把对象初始化了,把我们想要得到的对象存放到前面alloc的内存里。
  • init {
    if (self = [super init]) { //初始化父类,比如实例变量等等
    self = ...;
    }
    return self;
    }
  1. About alloc.
    调用完alloc后,内存是直接映射到堆,还是只分配给了虚拟内存?
    申请的这块内存又是多大呢?
  2. About memory.
    iOS里的内存被分为:clean memory and dirty memory
    Clean memory:可以被操作系统回收,在闪存中有备份,可以再次读取,主要包括 system framework,binary executable of your app, memory mapped files,code(代码段)
    Dirty memory:不可以被操作系统回收,所有非clean memory,包括 heap allocation(包括被分配了的堆空间), cashes, decompressed images,image cash
  3. 内存之间的关系
    物理内存:物理内存是真实插在板子上的内存,是多大就是多大,看机器配置的时候,看的就是这个内存。所谓升级就是可以外扩内存条。
    虚拟内存层面:virtual memory = clean memory dirty memory.
    物理内存层面:resident memory = dirty memory clean memory that loaded in physical memory.
    总结:virtual memory == (clean memory dirty memory) > resident memory > dirty memory。
    我们的程序很多时候会因为系统的内存不足而被杀死.

相关文章

网友评论

      本文标题:Class *anObject = [[Class alloc]

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