Linux Cache Memory
http://www.opsers.org/base/cache-memory-on-linux-detailed-cache-memory.html
Linux與Win的記憶體管理不同,會盡量快取記憶體以提高讀寫效能,通常叫做Cache Memory。有時候你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體free項會很少,此時檢視系統的 /proc/meminfo 檔案,會發現有一項 Cached Memory:
輸入cat /proc/meminfo檢視:
MemTotal: 1012704 kB MemFree: 281284 kB Buffers: 39836 kB Cached: 458000 kB
free命令裡各項記憶體指標說明:
total used free shared buffers cached Mem: 16425996 10727220 5698776 0 380904 9389832 -/+ buffers/cache: 956484 15469512 Swap: 8273464 212 8273252
其中第一行用全域性角度描述系統使用的記憶體狀況:
total——總實體記憶體
used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體
free——完全未被使用的記憶體
shared——應用程式共享記憶體
buffers——快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached——快取,用於已開啟的檔案
總結:
total=used+free used=buffers+cached (maybe add shared also)
第二行描述應用程式的記憶體使用:
前個值表示-buffers/cache——應用程式使用的記憶體大小,used減去快取值
後個值表示+buffers/cache——所有可供應用程式使用的記憶體大小,free加上快取值
總結:
-buffers/cache=used-buffers-cached +buffers/cache=free+buffers+cached
第三行表示swap的使用:
used——已使用
free——未使用
什麼是Cache Memory(快取記憶體):
當你讀寫檔案的時候,Linux核心為了提高讀寫效能與速度,會將檔案在記憶體中進行快取,這部分記憶體就是Cache Memory(快取記憶體)。即使你的程式執行結束後,Cache Memory也不會自動釋放。這就會導致你在Linux系統中程式頻繁讀寫檔案後,你會發現可用實體記憶體會很少。
其實這快取記憶體(Cache Memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。如果你希望手動去釋放Cache Memory也是有辦法的。
如何釋放Cache Memory(快取記憶體):
用下面的命令可以釋放Cache Memory:
To free pagecache: echo 1 > /proc/sys/vm/drop_caches To free dentries and inodes: echo 2 > /proc/sys/vm/drop_caches To free pagecache, dentries and inodes: echo 3 > /proc/sys/vm/drop_caches
注意,釋放前最好sync一下,防止丟失資料。
總結:個人經驗認為沒必要手動釋放,這種記憶體管理方式也是比win優勝的地方之一!因為Linux的核心記憶體管理機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以提高檔案以及磁碟的讀寫速度。
轉自:http://www.ha97.com/4337.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/720091/viewspace-1065846/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【構建Android快取模組】(二)Memory Cache & File CacheAndroid快取
- Memory Notification: Library Cache Object loaded into SGAObject
- influxdb報錯:cache-max-memory-size exceededUX
- Memory Notification: Library Cache Object loaded into SGA 告警Object
- Linux Memory ManagementLinux
- Oracle_TimesTen_and_In-Memory_Database_Cache_11g_Ed_1OracleDatabase
- Memory Notification: Library Cache Object loaded into SGA問題Object
- 清理linux cacheLinux
- 【問題處理】Memory Notification: Library Cache Object loaded into SGAObject
- Linux-Memory小記Linux
- Memory Allocation API In Linux Kernel && Linux Userspace、kmalloc vmalloc Difference、Kernel Large Section Memory AllocationAPILinux
- oracle 10.2.0.1的小bug:Memory NotificationLibrary Cache Object Loaded Into SgaOracleObject
- [轉]10.2.0.1的小bug:Memory NotificationLibrary Cache Object Loaded Into SgaObject
- linux cache and buffer【轉】Linux
- MEMORY_TARGET not supported on this system for linuxLinux
- Memory Notification: Library Cache Object Loaded Into Sga [ID 330239.1]Object
- linux手動回收cacheLinux
- Linux Memory Management or 'Why is there no free RAM?' (zt)Linux
- Linux Buffer/Cache 的區別Linux
- Linux手動釋放CacheLinux
- zabbix修改Template OS Linux模版Used memoryLinux
- Linux C/C++ Memory Leak Detection ToolLinuxC++
- zt:Linux效能監控之Memory篇Linux
- PostgreSQL DBA(89) - Linux(Buffer vs Cache)SQLLinux
- Linux 核心101:cache原理Linux
- Linux記憶體、Swap、Cache、BufferLinux記憶體
- linux cache與buffer的區別Linux
- Linux釋放cache記憶體Linux記憶體
- Memory Notification: Library Cache Object loaded into SGA Heap size 2098K exceeds notification thresObject
- 設定MEMORY_TARGET會導致RESULT_CACHE_MAX_SIZE在重啟後歸零
- memory
- Linux free中buffer與cache區別Linux
- oracle&linux檔案系統cacheOracleLinux
- Linux系統下清空Cache快取Linux快取
- linux系統中的Cache和BufferLinux
- ORA-27102:out of memory Linux-x86_64 Error: 12: Cannot allocate memory的處理LinuxError
- ORA-00845: MEMORY_TARGET not supported on this system - Linux ServersLinuxServer
- Linux memory management——(程式虛存空間的管理)(轉)Linux