1. 程式人生 > >Linux共享記憶體和cache

Linux共享記憶體和cache

申請以下共享記憶體,不對其進行初始化,共享記憶體大小為56600032bytes:

  

此時free:

             total       used       free     shared    buffers     cached
Mem:       3932356     132588    3799768          0       1148      26152
-/+ buffers/cache:     105288    3827068
Swap:      2008116        336    2007780

 執行程式,往共享記憶體中寫資料,free檢視,cache一直在增長:

             total       used       free     shared    buffers     cached


Mem:       3932356     193984    3738372          0       1656      48264
-/+ buffers/cache:     144064    3788292
Swap:      2008116        336    2007780

             total       used       free     shared    buffers     cached
Mem:       3932356     199348    3733008          0       1660      53460
-/+ buffers/cache:     144228    3788128
Swap:      2008116        336    2007780

             total       used       free     shared    buffers     cached

Mem:       3932356     274448    3657908          0       1864     143216
-/+ buffers/cache:     129368    3802988
Swap:      2008116        336    2007780

增長到143216後cache不再增長。

用ipcrm刪除該共享記憶體,free結果:

             total       used       free     shared    buffers     cached


Mem:       3932356     201528    3730828          0       1928      88032
-/+ buffers/cache:     111568    3820788
Swap:      2008116        336    2007780

釋放的cache為55184K,和申請的共享記憶體大小差不多。如此是否共享記憶體在最初申請的時候並沒有實際為其分配cache,只有在對共享記憶體進行寫操作的時候才實際分配cache記憶體。