美文网首页
app内存分配

app内存分配

作者: JoliLove | 来源:发表于2018-11-06 13:31 被阅读18次

栈区(stack)

存储局部变量

概述:栈是向低地址扩展的数据结构,是一块连续的内存区域。由栈顶的地址和栈的最大容量是系统预先规定好的。栈的空间很小,大概1-2M。超出overflow。

使用:栈区,就是函数(方法)运行时向系统请求的内存。栈中的局部变量,参数由编译器分配和释放,函数运行就分配,函数结束就释放,由系统完成。是系统数据结构,对应进程唯一。

特别注意:系统栈的剩余空间 大于 所申请的空间,系统为程序提供内存,不然,报错异常,提示栈的溢出。

堆区(heap)

存放实体对象的(alloc 申请的会放入堆中)

概述:堆是向高地址扩展的数据结构,不连续的内存区域。系统用链表储存空闲地址的。链表遍历由低向高。堆大小直接受设备有效虚拟内存影响。

1.首先应该知道操作系统有一个记录空闲内存地址的链表。
2.当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。
3.由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中

使用: 存放实体对象的。由程序员分配和释放(arc自动插入分配和释放代码),例如alloc 申请的会放入堆中。

一般由程序员分配释放,若程序员不释放,程序结束时 , 可能由OS回收

全局\静态区(static)

存储静态变量和全局变量

静态变量和全局变量是存储在一起的。初始化的全局变量和静态变量存放在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放
int a;//未初始化的静态区 int b = 10;//初始化的静态区

文字常量区

存放 **常量字符串,程序结束** 系统释放

程序代码区

存放函数的二进制代码

相关经典面试题

int a = 10;   // 初始化全局区
NSString *name1; // 未初始化全局区
NSString *name2 = @"lxx"; // 初始化全局区
- (void)interviewForStore
{
   int b;       // 栈区
   NSString *name3 = @"hyc";  // name3栈区   "hyc"在常量区
   NSString *name4;  // 栈区
   char h[] = "plm";  // 栈区
   static int k = 0;   // 全局初始化去

   NSString *m = [[NSString alloc] initWithFormat:@"le"];  // 堆区  (alloc分配得来的)
}

相关文章

  • app内存分配

    栈区(stack) 存储局部变量 概述:栈是向低地址扩展的数据结构,是一块连续的内存区域。由栈顶的地址和栈的最大容...

  • Android 内存溢出和内存泄漏的区别以及造成的原因

    1概述 内存溢出(Out of memory):系统会给每个APP分配内存也就是Heap size值,当APP所需...

  • Android常用检查内存泄漏,过度绘制的工具

    内存溢出(out of memery) 定义:APP运行时占用的内存超出系统分配给该APP的内存,就会出现内存溢出...

  • 内存优化

    一、内存优化的目的 Android系统给每个app分配的内存是有限的,各个厂商分配的内存大小自己定制,可在清单文件...

  • Android内存泄露检测

    一、Android内存分析基础 1、查看进程分配的最大内存 每个App进程可以分配到的最大内存是有限的,当然不同型...

  • Android开发之内存的优化

    一、查看当前手机的在单进程中所分配的内存 二、内存的管理方式 1、Android系统内存分配与回收方式 2、App...

  • iOS性能优化之内存泄露监测和修复

    内存泄露:如果程序运行时一直分配内存而不及时释放无用的内存,程序占用的内存越来越大,直到把系统分配给该APP的内存...

  • 图片加载和它的内存们

    在Android设备中,内存的分配是有限的,每个APP分配一定的内存空间,当内存使用达到一定的阈值,就会触发GC,...

  • Android获取App内存使用情况

    1.代码获取当前app内存的使用情况 结果 这说明我这个app在当前手机的最大分配内存是256m,现在已经分配了1...

  • Android内存管理

    Android内存管理 APP默认分配内存大小 在Android里,程序内存被分为2部分: native dalv...

网友评论

      本文标题:app内存分配

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