玩转Linux之内存管理-free

  free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。下面给出一个free命令的栗子:

 [root@compute ~]# free
total used free shared buffers cached
Mem: 8062392 2092832 5969560 0 187132 1498832
-/+ buffers/cache: 406868 7655524
Swap: 2097148 0 2097148

  下面介绍一下这个命令的输出结果信息:

  第一行:显示了内存的详细信息,比如说总内存、已用的内存、空闲的内存、多个进程共享的内存、用于缓冲区的内存以及用于缓存的内存。

  第二行:显示了总的缓冲区内存/缓存的内存使用以及空闲的情况。使用的是第二行used总内存(2092832)-used缓冲区内存(187132)-used缓存区内存(1498832)=406868.空闲的是total的(8062392)-used的缓存/缓冲区内存(406868)=7655524.

  第三行:显示了总的交换区总内存、已用的以及空闲的内存。交换区的就是在HDD上创建的用来增加虚拟的增加内存大小的虚拟内存。那么问题来了:

缓冲区和缓存有什么区别呢?

  缓冲区是针对特定的应用临时存储数据的地方,而且这些数据不能被其它应用使用。这和带宽的概念比较相似。当你尝试通过网络来传输突发性的数据时,如果你的网卡只能发送少量的数据时,它能把这些大量的数据存在缓冲区中,以便它能以较低的网卡能接受的速度来发送这些数据。在另一方面,缓存是为了更快的访问而存储一些被频繁使用的数据的东西。其它的不同就是缓存能被多次使用而缓冲区只能被用一次。但是它们都为你的数据处理提供一个临时存储。下面举些栗子来说下使用方法。

free命令使用的栗子

  1.以兆字节为单位显示内存(常用)

  这个是很好记的,就是-m:

 [root@compute ~]# free -m
total used free shared buffers cached
Mem: 7873 2043 5829 0 182 1463
-/+ buffers/cache: 397 7476
Swap: 2047 0 2047

  2.还有以字节、千字节、千兆为单位显示内存(不常用)

  使用-b、-k、-g参数,即可以字节、千字节、千兆字节为单位显示内存的大小:

 [root@compute ~]# free -b
total used free shared buffers cached
Mem: 8255889408 2142736384 6113153024 0 191623168 1534803968
-/+ buffers/cache: 416309248 7839580160
Swap: 2147479552 0 2147479552

  3.显示总计使用情况

  使用-t参数,将会多一行total用于显示总的使用量:

 [root@compute ~]# free -t
total used free shared buffers cached
Mem: 8062392 2092516 5969876 0 187132 1498832
-/+ buffers/cache: 406552 7655840
Swap: 2097148 0 2097148
Total: 10159540 2092516 8067024

  4.关闭显示缓冲区那一行

  使用-o参数,即可关闭第二行的显示:

 [root@compute ~]# free -o
total used free shared buffers cached
Mem: 8062392 2092764 5969628 0 187132 1498832
Swap: 2097148 0 2097148

  5.以一个固定的时间间隔更新当前内存使用情况

  加上-s参数,然后在-s参数后加上一个整数便会在定期的时间间隔中更新内存的使用情况,下面我将举个栗子,凑个整数吧,在1024s内更新一次:

 [root@compute ~]# free -o
total used free shared buffers cached
Mem: 8062392 2092764 5969628 0 187132 1498832
Swap: 2097148 0 2097148

  6.额外显示低以及高的内存的统计数据

  使用-l参数额外显示低以及高的内存大小统计数据:

 [root@compute ~]# free -l
total used free shared buffers cached
Mem: 8062392 2092516 5969876 0 187132 1498832
Low: 8062392 2092516 5969876
High: 0 0 0
-/+ buffers/cache: 406552 7655840
Swap: 2097148 0 2097148

  7.查看free命令的版本

  使用-V参数显示版本信息:

 [root@compute ~]# free -V
procps version 3.2.8

  以上。

参考:http://www.linuxnix.com/2013/05/find-ram-size-in-linuxunix.html

   http://www.tecmint.com/check-memory-usage-in-linux/

PS:本博客欢迎转发,但请注明博客地址及作者,因本人水平有限,若有不对之处,欢迎指出,谢谢~

  博客地址:http://www.cnblogs.com/voidy/

  博客新址:http://voidy.net

  <。)#)))≦

最新文章

  1. 关于APP接口设计(转)
  2. Nginx反爬虫
  3. sudo权限添加 和 rpm、deb之名词解释
  4. [Effective JavaScript 笔记]第16条:避免使用eval创建局部变量
  5. js基础的总结
  6. JSON 之 SuperObject(4): 增、删、改
  7. DEDE常见的错误(转)
  8. [Javascript] Safe Nested Object Inspection
  9. layout_weight
  10. unity Mesh(网格)的使用
  11. 重启mysql提示:The server quit without updating PID file问题的解决办法
  12. Hibernate快速入门实例
  13. 最短路之Floyd算法
  14. SpringMVC知识点小结
  15. 从聚合数据请求菜谱大全接口数据,解析显示到ListView
  16. Java SE 8 流库(四)
  17. Java数组的应用2:数组的最大,最小,求和,平均值,倒置
  18. Jira与Confluence集成、授权信息查看和问题汇总
  19. RHEL6.2的安装文档
  20. SpringMVC常用注解的规则(用法)

热门文章

  1. Kalman filter, Laser/Lidar measurement
  2. bzoj3882 [Wc2015]K小割
  3. BZOJ 3233: [Ahoi2013]找硬币
  4. 2017.9.23 HTML学习总结----JavaScript实现输入验证
  5. SQL之Case when 语句
  6. 【Java】对象、类(抽象类与内部类)、接口
  7. ABAP 调用远程rfc
  8. Java连接数据库的一个问题
  9. ES6编程规范
  10. Delphi中DLL的创建和使用(转)