程序的内存分配和管理

RAM:运行内存,不能掉电存储。ROM:存储性内存,能够掉电存储,例如内存卡、Flash。
因为RAM类型不具有掉电存储能力(即一掉电数据消失),因此app程序通常存放于ROM中。RAM的访问速度要远高于ROM,价格也要高。
 
App程序启动,系统会把开启的那个App程序从Flash或ROM里面拷贝到内存(RAM),而后从内存里面执行代码。
CPU不能直接从内存卡里面读取指令
 
栈区:通常存放函数参数,局部变量等值,由系统自动分配和管理,程序员没必要关心。存放里面的数据,听从先进后出的原则。
堆区:由程序员申请,管理和内存回收。数据储存的结构是链表。
全局区/静态区:储存全局变量和静态变量。
文字常量区:主要储存字符串常量。
程序代码区:存放程序的二进制代码。
 
 
在iOS中,堆区的内存是应用程序共享的,堆中的内存分配是系统负责的;
系统使用一个链表来维护全部已经分配的内存空间(系统仅仅纪录,并无论理具体的内容);
变量使用结束后,须要释放内存,OC中是根据引用计数==0,就说明没有任何变量使用该空间,那么系统将直接收回;
相关文章
相关标签/搜索