跳到主要內容

Linux可用記憶體的問題

[root@ntkbr06 proc]# free

total used free shared buffers cached
Mem: 1030528 1021884 8644 0 88832 793816 --> (代號 r1)
-/+ buffers/cache: 139236 891292 --> (代號 r2)
Swap: 2096472 112268 1984204 --> (代號 r3)


Mem:表示實體記憶體使用統計

-/+ buffers/cached:表示實體記憶體的緩存統計

Swap:表示硬盤上交換分區的使用情況



為什麼剩下的記憶體只剩下8M,這是因為Linux認為記憶體沒有使用非常的可惜,所以把空的記憶體

當成Cache及Buffer使用,等到程式需要使用記憶體時,才將Cache、Buffer空出來使用。

第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別:

第二行是從OS的角度來看, buffers/cached 都是屬於被使用,所以可用記憶體是8M

第三行是從應用程式角度來看,當應用程式需再用到記憶體的時候,會回收buffer/cached的空間,所以可用記憶體是890M

r1_free + r1_buffers + r1_cached = r2_free

8644 + 88832 + 793816 = 891292 --> 記憶體中可用的部份

r2_used + r2_free = r1_total

139236 + 891292 = 1030528 --> 實際記憶體大小


因此,程式實際佔用的記憶體為-/+ buffers/cache中used的部份

留言