申请以下共享内存,不对其进行初始化,共享内存大小为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内存。