Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 記憶體管理:buffer 與 cache 差異深度解析與 free 指令讀法

編輯:Linux 教學

free 指令輸出解讀

$ free
             total   used   free shared buffers cached
Mem:        255268 238332  16936      0   85540 126384
-/+ buffers/cache:  26408 228860
Swap:       265000      0 265000

第一行(Mem)

  • total:物理記憶體總量。
  • used:已分配給緩衝區與快取(含未實際使用部分)。
  • free:完全未被分配的記憶體。
  • buffers:區塊裝置讀寫緩衝區(尚未寫入磁碟)。
  • cached:檔案系統頁面快取(已從磁碟讀入)。

第二行(-/+ buffers/cache)

  • used:實際被應用程式使用的記憶體(= used1 - buffers - cached)。
  • free:系統當前真正可用記憶體(= free1 + buffers + cached)。

關鍵等式

total = used1 + free1
total = used2 + free2
used1 = buffers + cached + used2
free2 = buffers + cached + free1

Buffer vs Cache 根本差異

Buffer:資料**待寫入磁碟**的暫存區(區塊裝置寫入緩衝)。
Cache:資料**已從磁碟讀取**並暫存以供後續快速存取(檔案系統頁面快取)。

硬體層面 Cache 補充

  • L1/L2 Cache:CPU 內建高速快取(SRAM),解決 CPU 與主記憶體速度落差。
  • Buffer:協調不同速度裝置(如磁碟 vs 記憶體)的資料傳輸緩衝區。

實務判讀建議

  • cached 值大:大量檔案被快取,若熱點資料命中率高 → 磁碟讀 IO 極低。
  • buffers 值大:大量待寫入資料,需關注 pdflush/flush 執行緒狀態。
  • 真正記憶體壓力看 第二行 free,而非第一行 free。

Shared Memory 補充

主要用於進程間通訊(IPC),一般應用較少用到,不影響上述等式。

Copyright © Windows教程網 All Rights Reserved