日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

iOS開發(fā)中的內(nèi)存分配與分區(qū)

出處:電子產(chǎn)品世界 發(fā)布于:2018-08-09 13:53:32

  關(guān)于RAMROM

  RAM與ROM就是具體的存儲(chǔ)空間,統(tǒng)稱為存儲(chǔ)器。

  RAM(random access memory):運(yùn)行內(nèi)存,CPU可以直接訪問(wèn),讀寫速度非??欤遣荒艿綦姶鎯?chǔ)。它又分為:

  動(dòng)態(tài)DRAM,速度慢一點(diǎn),需要定期的刷新(充電),我們常說(shuō)的內(nèi)存條就是指它,價(jià)格會(huì)稍低一點(diǎn),手機(jī)中的運(yùn)行內(nèi)存也是指它。

  靜態(tài)SRAM,速度快,我們常說(shuō)的緩存,二級(jí)緩存就是指它,當(dāng)然價(jià)格高一點(diǎn)。

  ROM(read only  memory):存儲(chǔ)性內(nèi)存,可以掉電存儲(chǔ),例如SD卡、Flash(機(jī)械磁盤也可以簡(jiǎn)單的理解為ROM)。用的多的:NandFlash,還有NorFlash,現(xiàn)在用的已經(jīng)比較少了(兩者主要區(qū)別是前者空間大,便宜,后者可以直接運(yùn)行程序,讀取速度快)。

  由于RAM類型不具備掉電存儲(chǔ)能力(即一停止供電數(shù)據(jù)全沒(méi)了,從新上電后全是亂碼,所以需要初始化),所以app程序一般存放于ROM中。RAM的訪問(wèn)速度要遠(yuǎn)高于ROM,價(jià)格也要高。

  RAM與ROM協(xié)同工作

  由于RAM不能掉電存儲(chǔ),所以我們的APP程序,刷機(jī)包,的文件等等,都是在ROM里面存儲(chǔ)的。

  手機(jī)里面使用的ROM基本都是NandFlash,CPU是不能直接訪問(wèn)的,而是需要文件系統(tǒng)/驅(qū)動(dòng)程序(嵌入式中的EMC)將其讀到RAM里面,CPU才可以訪問(wèn)。另外,RAM的速度也比NandFlash快。

  內(nèi)存分區(qū):可以分為5個(gè)區(qū)

  說(shuō)到內(nèi)存分區(qū),內(nèi)存即指的是RAM。

  棧區(qū)(stack):  這個(gè)一般由編譯器操作,或者說(shuō)是系統(tǒng)管理,會(huì)存一些局部變量,函數(shù)跳轉(zhuǎn)跳轉(zhuǎn)時(shí)現(xiàn)場(chǎng)保護(hù)(寄存器值保存于恢復(fù)),這些系統(tǒng)都會(huì)幫我們自動(dòng)實(shí)現(xiàn),無(wú)需我們干預(yù)。  所以大量的局部變量,深遞歸,函數(shù)循環(huán)調(diào)用都可能耗盡棧內(nèi)存而造成程序崩潰 。

  堆區(qū)(heap): 一般由程序員管理,比如alloc申請(qǐng)內(nèi)存,free釋放內(nèi)存。我們創(chuàng)建的對(duì)象也都放在這里。

  全局區(qū)(靜態(tài)區(qū) static):全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,  未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后有系統(tǒng)釋放。注意:在嵌入式系統(tǒng)中全局區(qū)又可分為未初始化全局區(qū):.bss段和初始化全局區(qū):data段。舉例:int  a;未初始化的。int a = 10;已初始化的。

  常量區(qū):常量字符串就是放在這里的,還有const常量。

  代碼區(qū):存放代碼,app程序會(huì)拷貝到這里,程序不是在ROM里面存儲(chǔ)嗎?看下面的舉例

  memZonepic01.png

  程序運(yùn)行舉例(CPU RAM ROM之間協(xié)同)

  首先了解下:虛擬內(nèi)存與物理內(nèi)存。

  手機(jī)上的所有程序都是依托操作系統(tǒng),運(yùn)行在虛擬內(nèi)存上的,每一個(gè)APP都會(huì)以為自己擁有所有的虛擬內(nèi)存。比如一個(gè)手機(jī),它是32位操作系統(tǒng)(一般也是32位總線),真實(shí)的物理內(nèi)存為2G,那么他的尋址空間為4G(2的32次方),對(duì)于APP來(lái)說(shuō),它覺(jué)得自己擁有4G的內(nèi)存,雖然這是不可能的(或者說(shuō)同一時(shí)間是不可能的),但是,操作系統(tǒng)只要保證APP當(dāng)時(shí)用到的地址空間有真實(shí)的物理地址對(duì)應(yīng)就可以,APP也不需要知道那對(duì)應(yīng)的2G真實(shí)物理內(nèi)存具體在哪里。不要求4G的虛擬內(nèi)存同一時(shí)間都有真實(shí)的物理內(nèi)存相對(duì)應(yīng),當(dāng)然那也是不可能的,因?yàn)橹挥?G物理內(nèi)存。

  在下面的舉例中,只考慮虛擬內(nèi)存

  當(dāng)我們點(diǎn)擊手機(jī)屏幕APP的Icon啟動(dòng)一個(gè)APP(例如微信)時(shí),操作系統(tǒng)會(huì)為微信開辟4G的虛擬內(nèi)存空間(開辟真實(shí)的物理內(nèi)存,對(duì)應(yīng)一部分到4G的虛擬內(nèi)存),操作系統(tǒng)會(huì)把存儲(chǔ)在ROM里面微信的部分代碼(受空間所限,不可能全部拷貝),拷貝到上一步開辟的4G內(nèi)存空間的代碼區(qū),如上圖,然后CPU就可以訪問(wèn)RAM來(lái)運(yùn)行微信的程序了  。

  假設(shè)通過(guò)微信我們了一個(gè)100M的視頻,那么會(huì)從服務(wù)器一點(diǎn)一點(diǎn)的到RAM,然后再?gòu)腞AM寫到ROM存儲(chǔ)。這樣才能保證,我們關(guān)掉微信并再次打開時(shí)視頻還在。假設(shè)隔一段時(shí)間,我們要看視頻,程序會(huì)將它從ROM讀到RAM然后解碼播放。

  當(dāng)一個(gè)app啟動(dòng)后,代碼區(qū),常量區(qū),全局區(qū)地址已固定,因此指向這些區(qū)的指針不會(huì)為空而產(chǎn)生崩潰性的錯(cuò)誤。而堆區(qū)和棧區(qū)是時(shí)時(shí)刻刻變化的(堆的創(chuàng)建銷毀,棧的彈入彈出),所以當(dāng)使用一個(gè)指針指向這兩個(gè)區(qū)里面的內(nèi)存時(shí),一定要注意內(nèi)存是否已經(jīng)被釋放,否則會(huì)產(chǎn)生程序崩潰(編程中很常見)。


關(guān)鍵詞:iOS,內(nèi)存分配

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見,您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!