1) 系统刚刚启动的时候free会比较大
2) 运行一段时间之后,free会减小到很少,cache会增加到尽量大。
这会因为系统为了加速文件读写速度,减少磁盘使用次数尽量多的使用内存cache硬盘上的数据。虽然free比较少了,但是有新的内存请求的时候可以立即从cache里面回收物理内存,所以系统显示的可用内存变化不大(461M-465M)。
3)下面这个例子我用dd程序写一个1G的文件到硬盘,运行过程中需要申请大量内存。
当有程序运行过程中需要内存大于free的时候,根据swappiness的设置按照一定比例,回收cache页面和anon页面来满足新的内存分配需求。cache会减小,swap used会增加,used 会增加。
当程序运行结束的时候会重新释放内存,可以看到free增加列很多,cache暂时变化不大,因为没有新的磁盘读写。Swap used会减小,但还是大于系统刚启动的时候,这是因为有一部分数据暂时不被应用程序使用到,也没有释放,就继续留在swap中。随着系统运行时间的增长swap中这种数据可能会慢慢积累到一个比较大的数字。比如我们看到的gdm和mysqld程序长时间运行会在swap中占用很大空间。