iOS内存管理

内存管理

内存管理 环境包括:

 

  • 内存布局(五大区、全局变量、静态变量...)
  • 内存管理方案(散列表、ARC、MRC、tagged pointer、none point...)
  • RAC&MRC
  • 引用计数
  • 弱引用(weak维护了一和弱引用表)
  • 自动释放池(涉及到RunLoop)

 

内存布局 五大块:

 

 

  

  • 栈区:函数,方法
  • 堆区:通过alloc分配的对象,block copy
  • BSS段:未初始化的全局变量,静态变量
  • 数据段:初始化的全局变量,静态变量
  • text:程序代码,加载到内存中
  • 栈区内存地址:一般为:0x7开头
  • 堆区内存地址:一般为:0x6开头
  • 数据段,BSS内存地址:一般为:0x1开头
  面试题:全局变量和局部变量是否有区别?如果有,有什么区别?
  答:有,位置不同,所以访问权限不同,前者可供全局访问,后者在内部访问
 
  面试题:Block是否可以修改全局变量?
  答:可以修改,因为全局变量的作用域很大

 

 内存管理方案:

  • TaggedPointer:小对象-NSNumber,NSDate
  • NONPOINTER_ISA:非指针型isa
  • 散列表:引用计数表,弱引用表


 

posted on 2020-08-07 08:12  在一起的浅蓝色  阅读(86)  评论(0编辑  收藏  举报

导航