Linux内存命令free

1. free命令

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7869       7057        811          0        638       1049
-/+ buffers/cache:       5369       2499
Swap:            0          0          0

2. Linux 如何使用内存

当应用从磁盘读数据,首先是从磁盘将数据加载到内存之中,如果物理内存不够,则把内存中的部分数据导入到磁盘中,将磁盘的部分空间当做虚拟内存来用,称为Swap.

但如果内存足够且有剩余,则Linux会合理应用这些内存,以提高整体的I/O效率,将剩余内存划分为buffers和cached两部分。

buffers和cached有什么区别呢?

cached -- 读

当应用程序读取某些数据时,这些数据(可能还有这些数据附近的扇区的数据)在用完之后并不一定会被清理,而是存到cached里面,若应用程序再次用到数据会直接从cached读取,避免了重复的磁盘I/O。

buffers-- 写

当应用程序修改了部分数据之后,由于写入磁盘的速度比较慢,可以先把数据存入buffers,应用程序可以继续其它操作,而无需等待数据写入磁盘的操作完成。

当系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放给系统使用。

3. 各个字段的含义

1,total:物理内存实际总量
2,used:这块千万注意,这里可不是实际已经使用了的内存哦,这里是总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
3,free:未被分配的内存
4,shared:共享内存
5,buffers:系统分配的,但未被使用的buffer剩余量。注意这不是总量,而是未分配的量
6,cached:系统分配的,但未被使用的cache 剩余量。buffer 与cache 的区别见后面。

7,buffers/cache used:这个是buffers和cache的使用量,也就是实际内存的使用量,这个非常重要了,这里才是内存的实际使用量哦

8, buffers/cache free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。千万注意,这里是 三者之和,也就是第一排的 free+buffers+cached,可不仅仅是未被使用的buffers 与cache的和哦,还要加上free(未分配的和)

9,swap,这个我想大家都理解,交换分区总量,使用量,剩余量

4. 生产环境谨慎执行的几个命令

  1. find
find / | grep "x"

若是服务器文件太多,扫描后这些文件信息都缓存到了slab区。而服务器如果开了swap,操作系统发现物理内存占满后,并没有立即释放cache,导致每次GC,都和硬盘打一次交道。然后,所有服务会不间歇卡顿了。

  1. vim 打开大文件
    vim打开大文件,所有文件的内容都会先加载到内存。结果,内存占满、接着swap也满了,然后oom-killer杀死了服务进程。

文章整理自:
linux中内存使用,swap,cache,buffer的含义总结
Linux之《荒岛余生》(三)内存篇

你可能感兴趣的:(Linux内存命令free)