iOS記憶體快取和磁碟快取的區別

2021-08-22 09:55:24 字數 1118 閱讀 7526

快取分為記憶體快取和磁碟快取兩種,其中記憶體是指當前程式的執行空間,快取速度快容量小,是臨時儲存檔案用的,供cpu直接讀取,比如說開啟乙個程式,他是在記憶體中儲存,關閉程式後記憶體就又回到原來的空閒空間;磁碟是程式的儲存空間,快取容量大速度慢可持久化與記憶體不同的是磁碟是永久儲存東西的,只要裡面存放東西,不管執行不執行 ,他都占用空間!磁碟快取是存在library/caches。

說道ios記憶體就不得不說記憶體分割槽了,ios記憶體分為5個區:棧區,堆區,全域性區,常量區,**區

棧區stack:這一塊區域系統會自己管理,我們不用干預,主要存一些區域性變數,以及函式跳轉時的現場保護。因此大量的區域性變數,深遞迴,函式迴圈呼叫都可能導致記憶體耗盡而執行崩潰。

堆區heap:與棧區相對,這一塊一般由我們自己管理,比如alloc,free的操作,儲存一些自己建立的物件。

全域性區(靜態區static):全域性變數和靜態變數都儲存在這裡,已經初始化的和沒有初始化的會分開儲存在相鄰的區域,程式結束後系統會釋放

常量區:儲存常量字串和const常量

**區:儲存**

說道硬碟快取這裡就不得不提 ios的沙盒機制, 

ios應用程式只能在該程式建立的檔案系統中讀取檔案,不可以去其它地方訪問,此區域被成為沙盒,所以所有的非**檔案都要儲存在此,例如影象,圖示,聲音,映像,屬性列表,文字檔案等

預設情況下,每個沙盒含有3個資料夾:documents, library 和 tmp。

documents:蘋果建議將程式中建立的或在程式中瀏覽到的檔案資料儲存在該目錄下,itunes備份和恢復的時候會包括此目錄

library:儲存程式的預設設定或其它狀態資訊;

library/caches:存放快取檔案,itunes不會備份此目錄,此目錄下檔案不會在應用退出刪除.

library/preferences: 存放的是 user default 儲存的資訊,itunes會備份此目錄, 應用程式重新啟動不會丟棄資料,我們使用 nsuserdefaults寫的設定資料都會儲存到該目錄下的乙個plist檔案中,這就是所謂的寫到plist中!

tmp:提供乙個即時建立臨時檔案的地方, itunes不會備份此目錄

iOS快取 記憶體快取

為了減少與伺服器的連線溝通次數,提高應用程式的執行速度,使用了ios的快取機制 import youngviewcontroller.h inte ce youngviewcontroller end implementation youngviewcontroller void viewdidlo...

iOS快取 記憶體快取

為了減少與伺服器的連線溝通次數,提高應用程式的執行速度,使用了ios的快取機制 import youngviewcontroller.h inte ce youngviewcontroller end implementation youngviewcontroller void viewdidlo...

快取和記憶體,磁碟的關係

快取嚴格來說就是一種臨時儲存,和記憶體原理上沒有什麼區別。因為在大資料交換中,儲存器不能及時和運算器 控制器交換資料的話,就會出現問題,所以人們發明了快取。說白了假設運算器和控制器是工廠,儲存器 比如硬碟 光碟機等 是大倉庫的話,記憶體就是乙個大型中轉中心 當然它也是倉庫,但是是乙個大型的中轉倉庫 ...