第一行
- total 表示物理内存总量
- used 表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用
- free 未被分配的内存
- shared 共享内存,一般系统不会用到
- buffers 系统分配但未被使用的buffers 数量
- cached 系统分配但未被使用的cache 数量
第二行
- used 实际使用的buffers 与cache 总量,也是实际使用的内存总量
- free 未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存
剩余内存计算(以上图为例子)438+61+262 大致等于 第二行的free 763
对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响
cache 和 buffer的区别
A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.
- Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,cpu从内存获取数据会有延迟,Cache中保存着CPU刚用过或者经常使用的一部分数据,有一定的算法把不常用的数据排出,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
- Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
- 通俗的总结:buffer是即将要被写入磁盘的,cache是被从磁盘中读出来的 cache中的数据备给cpu调用的,buffer里的数据是用于写入磁盘的
buffer是由各种进程分配的,被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。