在Linux系统中,使用free -m可以查看系统内存状况
以下内容大部分参考自:https://blog.csdn.net/javastart/article/details/54971299
total | used | free | shared | buffers | cached | |
---|---|---|---|---|---|---|
Mem | 物理内存总量 | 总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 | 未被分配的内存 | 共享内存 | 系统分配但未被使用的buffers数量 | 系统分配但未被使用的cache数量 |
-/+ buffers/cache | - | 实际使用的buffers与cache总量,也是实际使用的内存总量 | 未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存 | - | - | - |
Swap | - | - | - | - | - | - |
cache 和 buffer的区别:
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的区别:
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.
可以整理出如下等式:
total(Mem) = used(Mem) + free(Mem)
total(Mem) = used(buffers/cache) + free(buffers/cache)
used(Mem) = buffers(Mem) + cached(Mem) + used(buffers/cache)
free(buffers/cache) = buffers(Mem) + cached(Mem) + free(Mem)