首頁>Club>
5
回覆列表
  • 1 # 瘋語者書夫碼字先生

    受記憶體保護。

    平常當我們使用free 檢視記憶體使用的情況,看到cache佔比很大,一般都認為cache的都是可被系統使用的。事實上,cache的部分記憶體是不會被自動釋放的。

    以下所列是Linux系統記憶體cache的幾種不會被釋放的情況。

    當cache作為檔案快取被釋放的時候會引發IO變高,這是cache加快檔案訪問速度所要付出的成本。

    tmpfs(Linux提供一種“臨時”檔案系統)中儲存的檔案會佔用cache空間,除非檔案刪除否則這個cache不會被自動釋放。

    使用shmget方式申請的共享記憶體會佔用cache空間,除非共享記憶體被ipcrm或者shmdt,否則相關的cache空間都不會被自動釋放。

    使用mmap(將一個檔案對映進程序的虛擬記憶體地址,之後就可以透過操作記憶體的方式對檔案的內容進行操作)方法申請的MAP_SHARED標誌的記憶體會佔用cache空間,除非程序將這段記憶體munmap,否則相關的cache空間都不會被自動釋放。

    實際上shmget、mmap的共享記憶體,在核心層都是透過tmpfs實現的,tmpfs實現的儲存用的都是cache。

    記憶體的使用是一件很複雜的事情,cache是不能當做空閒空間使用的,深究記憶體之道,任重而道遠。

  • 2 # 待花開秋風似水浮生

    正常,linux核心有自動快取機制。硬碟檔案的讀寫,等很多操作在記憶體中有快取,定時同步到硬盤裡。通常使用率都在90%徘徊。但快取在記憶體需求增加時會被釋放以提供記憶體。

  • 中秋節和大豐收的關聯?
  • 小學生做閱讀筆記?