mmap的好處:
和read、write系統呼叫相比不會產生無關的副本;
如果不出錯就不會有系統呼叫、操作環境切換等開銷;
不再需要lseek呼叫。
mmap的壞處:
記憶體對映總是pagesize的整數倍,會浪費一定的記憶體;
如果要對映的內容非常大的時候可能找不到連續的線性位址空間;
建立並維護核心相關資料結構,這部分可能抵消雙重副本節省下的開銷,尤其是大型頻繁訪問的檔案。
下面是乙個檔案對映比較全面的例子:
int main()else//調整對映的大小,mremap_maymove說明是可移動的
p = (char*)mremap(p, 10, 20, mremap_maymove);
if(p == map_failed)else
//修改記憶體訪問許可權
i = mprotect(p, 20, prot_read);
if(p == map_failed)else
//*p='b';這是會引起段錯誤
//給核心提建議(預讀)
i = madvise(p, 20, madv_willneed);
if(i == -1)else
//解除對映
i = munmap(p, 10);
if(i == -1)else
}close(fd);
return
0;}
iOS將大檔案對映到記憶體 讀取大檔案
from 2012年10月23日 在 中國區gps偏移糾正 適用於google地圖 一文中曾讀取乙個78m的大資料檔案,一開始採用了nsdata的datawithcontentsoffile 方法。不少人反饋說如果直接使用,將會耗盡ios的記憶體。其實這個是可以改善的。nsdata還有乙個api i...
將實體對映到多個表
table secondtable name catalog schema pkjoincolumns 指定新資料表中的乙個或多個外來鍵,只有通過該外來鍵才可讓新資料表中的記錄參照到主表記錄,屬性 primarykeyjoincolumn uniqueconstraints 為新資料表指定唯一約束 ...
將MySQL資料對映到Memcached
本文介紹利用mysql udfs for memcached與mysql觸發程式結合實現將mysql的資料對映到memcached的一種方法,能實現當mysql資料更新時,實時更新memcache資料的效果,從而減少開發相應程式來維護memcached資料。mysql udfs for memcac...