Free - QLGQ/learning-python GitHub Wiki
free
Linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位)。系统实际内存占用以及可用内存有如下几个加减法:
- used = total - free 即 total = used + free
- 实际内存占用: used - buffers - cached 即 total - free -buffers - cached
- 实际可用内存: free + buffers + cached 即 total - used + buffers + cached
[root@db2 pgdata]# free -m
total used free shared buffers cached
Mem: 516913 410968 105944 0 238 390001
-/+ buffers/cache: 20727 496185
Swap: 35895 2417 33478
可见:-buffers/cache反映的是被程序实实在在使用的内存,而+buffers/cache反映的是可以挪用的内存总数。
交换分区Swap,也就是我们通常所说的虚拟内存。
Buffers和Cached的区别
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 useA 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.
对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
- buffers:指用来给块设备做的缓冲大小,它只记录文件系统的metadata以及tracking in-flight pages。(写缓存,在写入磁盘之前,先把数据缓存一段时间,可以释放。)
- cached:用来给文件做缓冲。(读缓存,读取过的文件,会缓存一段时间,可以释放。)
那就是说:buffers是用来存储,目录里面有什么内容、权限等等;而cached直接用来记忆我们打开的文件。
- 当你看见 buffer/cache 的空闲空间低或者 swap 的空闲空间低,说明内存需要升级了。这意味这内存利用率很高。请注意 shared(共享)内存列应该被忽略 ,因为它已经被废弃了。
- 所以我们看linux,只要不用swap的交换 空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看 内存是否够用的标准哦。
那明明已经开始使用 swap了,怎么能说内存还充足呢?照我的理解是,系统在分配内存的时候,如果发现内存不足,会释放一批旧的cache,把空间腾出来给新申请的进程用, 有时候释放不充分或者不及时,于是开始使用到swap了!