free 命令可以显示系统已用和空闲的内存情况。包括物理内存、交互区内存(swap)和内核缓冲区内存(buffer)。共享内存将被忽略。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

1 用法及常用参数

free [option] -b  # 以Byte为单位显示内存使用情况
-k  # 以KB为单位显示内存使用情况
-m  # 以MB为单位显示内存使用情况
-g   # 以GB为单位显示内存使用情况
-h   # 自动转换单位(最常用)
-o  # 不显示缓冲区调节列
-s <间隔秒数>  # 持续观察内存使用状况
-t  # 显示内存总和列
-V  # 显示版本信息

2 命令输出的结果详解

在终端输入free。结果如下:

[@bjzw_106_203 ~]# freetotal       used       free     shared    buffers     cached
Mem:       8182340    7909480     272860          0     463820    5228244
-/+ buffers/cache:    2217416    5964924
Swap:      1048568       2612    1045956

Mem :表示物理内存的统计(系统已使用、空闲的内存)。

-/+ buffers/cache: 应用程序已使用的、空闲的物理内存。

Swap:交换分区的内存统计。

total:表示物理内存总量(total = used + free)
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:多个进程共享的内存总额。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。

强调一下buffers和cached的区别:

  对于应用程序来说:buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。可用内存=系统free memory+buffers+cached。

buffers:是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages。也就是说,buffers是用来存储,目录里面有什么内容,权限等等。
cached:直接用来记忆我们打开的文件,是用来给文件做缓冲的。

综上所述,

  对操作系统来讲是:Mem的参数buffers/cached 都是属于被使用,所以它认为free只有272860;
  对应用程序来讲是:(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。以应用来看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了。

3 说说Swap

当可用内存少于额定值的时候,就会开会进行交换。额定值被定义在/proc/meminfo 这个文件。

[@bjzw_106_203 ~]# cat /proc/meminfo
MemTotal:      8182340 kB
MemFree:        346672 kB
Buffers:        463956 kB
Cached:        5156992 kB
SwapCached:          0 kB
Active:        3027644 kB
Inactive:      4170020 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      8182340 kB
LowFree:        346672 kB
SwapTotal:     1048568 kB
SwapFree:      1045956 kB
Dirty:              48 kB
Writeback:           0 kB
AnonPages:     1576704 kB
Mapped:          23552 kB
Slab:           422056 kB
PageTables:     164404 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   5139736 kB
Committed_AS:  5433220 kB
VmallocTotal: 34359738367 kB
VmallocUsed:      1260 kB
VmallocChunk: 34359720023 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

交换将通过三个途径来减少系统中使用的物理页面的个数:

(1) 减少缓冲与页面cache的大小;
(2) 将系统V类型的内存页面交换出去; 
(3) 换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
少量地使用swap是不会影响到系统性能的。

  追踪Linux系统的内存使用一直是个难题,很多人试着把能想到的各种内存消耗都加在一起,kernel text、kernel modules、buffer、cache、slab、page table、process RSS…等等,却总是与物理内存的大小对不上,这是为什么呢?因为Linux kernel并没有滴水不漏地统计所有的内存分配,kernel动态分配的内存中就有一部分没有计入/proc/meminfo中。

转载于:https://www.cnblogs.com/zingp/p/8022717.html

Linux内存信息查看——free命令相关推荐

  1. Python之Django实例--sysinfo项目搭建(中文版 Linux 服务器信息查看应用)

    文章目录 1. 创建项目 1.1 创建项目 1.2 创建App 1.3 配置setting 1.4 生成迁移文件并设置管理员 1.5 测试是否配置成功 1.6 git 提交 1.6.1 设置忽略文件 ...

  2. 【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )

    文章目录 一.查看内存信息 二.查看 CPU 信息 三.查看电池信息 四.查看账户信息 五.查看 Activity 信息 六.查看 Package 信息 一.查看内存信息 查看系统内存详细信息 : 使 ...

  3. redhat linux 硬件信息查看

    redhat linux 硬件信息查看 查看服务器型号序列号 dmidecode|grep "System Information" -A9 查看主板型号 dmidecode | ...

  4. Linux 服务器信息查看

    硬件系统重点关注的指标: # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数 cat /pr ...

  5. Linux记载磁盘信息,分享一款高逼格的Linux磁盘信息查看工具

    原标题:分享一款高逼格的Linux磁盘信息查看工具 可以使用df命令来显示在Linux.macOS和类Unix系统中挂载的文件系统上有多少可用磁盘空间.还可以使用du命令来估计文件空间的使用情况.我们 ...

  6. linux怎么查看文件内容并显示行号,Linux文件内容查看相关命令

    原标题:Linux文件内容查看相关命令 Linux系统中使用以下命令来查看文件的内容: cat.tac.nl.more.less.head.tail 你可以使用 man [命令]来查看各个命令的使用文 ...

  7. 怎么查看linux服务器品牌,怎么查看Linux服务器硬件信息,这些命令告诉你

    Linux服务器配置文档找不到,你还在为查询Linux服务器硬件信息发愁吗?学会这些命令,让你轻松查看Linux服务器的CPU,内存,硬盘,SN序列号等信息,根本就不用去机房. 一.查看CPU信息 C ...

  8. 查看DAID设备Linux,linux 硬件信息查看命令

    在 Linux 下进行开发时,有时也需要知道当前的硬件信息,比如:CPU几核?使用情况?内存大小及使用情况?USB设备是否被识别?等等类似此类问题.下面良许介绍一些常用的硬件查看命令. lshw ls ...

  9. Linux硬件信息查看

    1主板信息,查看主板的序列号   -------------------------------------------------- #使用命令     dmidecode | grep -i 's ...

最新文章

  1. php 类中的各种拦截器
  2. webpack 占位符_通过示例学习Webpack:占位符图像模糊
  3. 11_短信发送器_快速回复页面实现
  4. 母版页嵌套子母版页通信
  5. java getevent_Java ActionEvent.getWhen方法代码示例
  6. 【一套代码小程序NativeWeb阶段总结篇】可以这样阅读Vue源码
  7. 【大数据】0002---MongoDB集群自动分离创建新集群
  8. 图:Flash渲染控件安装失败原因所在.
  9. Redis: 为行情数据库设计键值
  10. MATLAB深度学习 2019
  11. DOSBOX下载和使用
  12. 向量自回归VAR模型、结构向量自回归SVAR模型、VMA模型
  13. 面向对象编程---掷骰子游戏
  14. FlowNet 2.0的阅读笔记
  15. 二维码在Access中的使用
  16. 一天一阔阔儿ZYNQ的linux移植完整版(Linux环境搭建以及内核编译)
  17. mysql实现自增字符串_Mysql实现字符串主键自增示例教程-Go语言中文社区
  18. 微信开通状态检测工具(免验证码版)运行原理
  19. K8s关于异常Pod的处理
  20. urlrewriter 用法

热门文章

  1. 工信部提醒:用户及时设置 SIM 卡密码,丢失手机后第一时间挂失
  2. Linux vi/vim 操作命令大全
  3. TensorFlow Keras 官方教程
  4. tomca7.0 mysql配置连接池_tomcat7.0+mysql连接池配置
  5. 操作系统常用调度算法
  6. 001-SDK框架之Unity游戏调用SDK
  7. sql自动生成工具_可自动生成代码,5款基于AI的开发工具
  8. ImageView scaleType
  9. 慢 SQL 诊断优化套路包,套路用的对,速度升百倍
  10. Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程