1、free 命令的选项
使用 free 命令查看服务器内存使用情况。
free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]
(1)-b,-k,-m,-g    表示输出显示的单位为 bytes, KB, MB, or GB,不添加选项的话默认以 KB 为单位显示
(2)-h                 以人类可读的方式显示,即后边会自动带上单位
(3)-l                  显示详细的低内存和高内存统计信息(增加了 Low 和High 这两行显示)
(4)-o                 使用旧的格式显示(不显示 -/+buffers/cache 这一行)
(5)-t                 增加显示 Total 行,Total = Mem + Swap
(6)-s delay       每 delay 秒重复打印一次,delay 为具体的秒数
(7)-c count       重复打印 count 次后退出,count 为具体的次数。需要配合 -s delay 使用
(8)-V                  显示版本信息

2、free命令显示结果
以下是我们测试环境的参数:

[root@bigdata zw]# free -m
total used free shared buffers cached
Mem: 32107 30414 1692 0 1962 8489
-/+ buffers/cache: 19962 12144
Swap: 0 0 0

第一行Mem,表示物理内存统计:
(1)total       物理内存总量,total = used + free
(2)used      总计分配给缓存(包含 buffers 与 cache)使用的数量,但其中可能部分缓存并未实际使用
(3)free       未被分配的内存
(4)shared  共享内存,一般系统不会用到,总是0
(5)buffers  系统分配但未被使用的 buffers 数量
(6)cached  系统分配但未被使用的 cache 数量
第二行-/+ buffers/cache:
(1)used    实际使用内存,等于第一行的 used - buffers - cached
(2)free     实际可用内存,等于第一行的 free + buffers + cached
第三行Swap表示交换区的使用情况,也就是我们通常所说的虚拟内存。
(1)total   总量
(2)used  使用
(3)free   空闲

3、linux的缓存设计
(1)Linux内存管理做了很多精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache 和 Page Cache,目的就是为了提升磁盘IO的性能。
即 buffer (Buffer Cache) 用于存放要输出到磁盘的数据,而 cache(Page Cache) 是从磁盘读出存放到内存中等待以后使用的数据。它们的引入都是为了提升IO的性能。
(2)从低速的块设备(硬盘)上读取数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,它可以从内存中直接读取,从而绕开低速的块设备(硬盘),从而提高系统的整体性能。
Linux会充分利用这些空闲的内存,设计思想是内存空闲还不如拿来多缓存一些数据,等下次程序再次访问这些数据速度就快了。
(3)如果程序要使用内存而系统中内存又不足时,这时不是使用交换分区,而是快速回收部分缓存,将它们留给用户程序使用。
因此,可以看出,buffers/cached真是百益而无一害,真正的坏处可能让用户产生一种错觉——Linux耗内存!其实不然,Linux并没有吃掉你的内存,只要还未使用到交换分区,你的内存所剩无几时,你应该感到高兴,因为Linux缓存了大量的数据,也许下一次你就访问的是这些缓存数据。
windows系统内存是软件用多少给多少。而linux是你有多少物理内存,我全部用,正在运行的软件占用的活动内存之外,其余空闲内存基本都被用来预加载了一些其他系统或者应用数据。这样你打开软件的时候才会很快。
内存闲着就是浪费,不如多放点数据,指不定下次需要访问的数据就能够直接从内存获得而不用访问很慢的硬盘。一定程度上说,linux和mac流畅度比windows好,这个占很重要一部分原因。

linux 中free命令的更多相关文章

  1. Linux中exec命令相关

    Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...

  2. linux中touch命令参数修改文件的时间戳(转)

    linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...

  3. linux中执行命令权限不够怎样处理

    在linux中执行命令权限不够就要增加权限,先看遇到的情况 查看权限情况 那就赋予权限 执行命令

  4. Linux中监控命令top命令使用方法详解

    收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...

  5. Linux中date命令的各种实用方法--转载

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的 ...

  6. linux中查找命令find、locate、whereis、which、type区别

    linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

  7. Linux中service命令和/etc/init.d/的关系

    Linux中service命令和/etc/init.d/的关系   service xxx启动 /etc/init.d/ 目录下的xxx脚本 如一个脚本名为 mysvc保存在/etc/init.d/下 ...

  8. 13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法

    Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...

  9. 12个 Linux 中 grep 命令的超级用法实例

    12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...

  10. Linux中find命令的用法汇总

    Linux中find命令的用法汇总 https://www.jb51.net/article/108198.htm

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_8.RabbitMQ研究-工作模式-发布订阅模式-生产者

    Publish/subscribe:发布订阅模式 发布订阅模式: 1.每个消费者监听自己的队列. 2.生产者将消息发给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将 ...

  2. 遍历日期的Linux Shell脚本

    #! /bin/bash date=$1 eddt=$2 while [ $date -le $eddt ]; do echo $date date=$(date -d "${date}+1 ...

  3. Windows下的3389端口渗透

    1.Win7.Win2003.XP系统 在CMD命令行开启3389端口:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" &qu ...

  4. java中类加载的全过程及内存图分析

    类加载机制: jvm把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成jvm可以直接使用的java类型的过程. (1)加载 将class文件字节码内容加载到内存中,并将这些静态数据转 ...

  5. codevs 2853:方格游戏

    (排版没搞好,这一行用来卖萌~) 题目描述 Description 菜菜看到了一个游戏,叫做方格游戏~ 游戏规则是这样的: 在一个n*n的格子中,在每个1*1的格子里都能获得一定数量的积分奖励,记左上 ...

  6. APUE ☞ 文件和目录

    粘着位(Sticky Bit) S_ISVTX位被称为粘着位.如果一个可执行程序文件的这一位被设置了,程序第一次运行完之后,程序的正文部分的一个副本仍被保存在交换区(程序的正文部分是机器指令).这使得 ...

  7. JavaSE基础(五)--Java运算符

    Java 运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 ...

  8. [LuoguP2151][SDOI2009]HH去散步_递推_矩阵乘法_图论

    HH去散步 题目链接:https://www.luogu.org/problem/P2151 数据范围:略. 题解: 数据范围好小,让人不禁想用一些毒瘤算法,但是失败了. 这种类似时间啊这种有点重复味 ...

  9. Javascript性能优化阅读笔记

    第一章 加载和执行 大多数浏览器都是用单一进程处理UI界面的刷新和JavaScript的脚本执行,所以同一时间只能做一件事,Javascript执行过程耗时越久,浏览器等待响应的时间就越长. 所以,H ...

  10. mysql中的反引号``

    [1]反引号`,数字1左边的符号.tab键上面的符号. 它是为了区分MYSQL的保留字与普通字符而引入的符号. 不加反引号建的表不能包含MYSQL保留字,否则出错 如上图,很明显的,如果我们直接建立名 ...