如何通过free看懂内存的真实使用
之前有位同事问过Linux系统内存free命令下各参数的区别与关系,自己也没太明白,有点尴尬。今天整理一下,供了解。
free命令是Liunx操作系统中对内存进行查看和监控的一个常用命令。我们可以直接执行free命令获取操作系统内存使用的相关数据,如下所示:
[root@ufdb165 ~]# free
total used free shared buff/cache available
Mem: 63722036 2850012 5629452 16861900 55242572 43486320
Swap: 33554428 0 33554428
[root@ufdb165 ~]# free -h
total used free shared buff/cache available
Mem: 60G 2.7G 5.4G 16G 52G 41G
Swap: 31G 0B 31G
默认直接执行free获取到的内存数据的单位都是k,Mem这一行展示的是物理内存使用情况,Swap这一行展示的是内存交换区(通常也叫虚拟内存)的整体使用情况。
- tatal列:显示的是系统总的可用物理内存和交换区的大小,单位为k。
- used列:显示的是已经被使用的物理内存和交换区的大小,单位为k。
- free列:显示的是还有多少物理内存和交换区没有被使用,单位为k。
- shared列:显示的是共享区占用的物理内存大小,单位为k。
- buff/cache列:显示的是被缓冲区和page缓存合计使用的物理内存大小,单位为k。
- buff:在操作系统中指的是缓冲区,负责磁盘块设备的读写缓冲,会直接占用系统的物理内存。
- cache:指的是操作系统中的page缓存,这个缓存是Liunx内核实现的磁盘缓存,就是将磁盘中的数据缓存到物理内存中,以减少内核对磁盘I/O的读写操作,这样对磁盘的访问就会变为对物理内存的访问,从而大大提高了系统对磁盘的读写速度。cache类似于应用程序中使用redis来实现缓存一样,其实就是把一些经常需要访问的数据存储到物理内存中来提高数据访问的速度。
- available列:显示的是可用物理内存的大小,单位为k。通常情况下,avaliable的值等于free+buff/cache。Liunx内核为了提高磁盘读写的速度会使用一部分物理内存来缓存经常要使用的磁盘数据,所以buff和cache对于Linux操作系统的内核来说,都属于已经被使用的内存,而free列显示的是真正未被使用的物理内存。不过,如果物理内存不够用了并且应用程序恰巧又需要使用物理内存时,内核就会从buff和cache中回收被它们占用的物理内存来满足应用程序的需要,也就是说buff和cache占用的物理内存是可以被内核释放的。
如何通过free看懂内存的真实使用的更多相关文章
- 一文看懂JVM内存区域分布与作用
那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看. 须知,本文是根据JDK8来介绍的. 程序计数器 首先它是线程私有的,它也称为代码的行号指示器,字 ...
- 看懂SqlServer查询计划【转】
原文链接:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 开始 SQL Server 查找记录的方法 SQL Server ...
- 【转载】看懂SqlServer查询计划
看懂SqlServer查询计划 阅读目录 开始 SQL Server 查找记录的方法 SQL Server Join 方式 更具体执行过程 索引统计信息:查询计划的选择依据 优化视图查询 推荐阅读-M ...
- 看懂SqlServer查询计划
看懂SqlServer查询计划 阅读目录 开始 SQL Server 查找记录的方法 SQL Server Join 方式 更具体执行过程 索引统计信息:查询计划的选择依据 优化视图查询 推荐阅读-M ...
- 看懂SqlServer查询计划 SQL语句优化分析
转自 http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 阅读目录 开始 SQL Server 查找记录的方法 SQL Ser ...
- 追源索骥:透过源码看懂Flink核心框架的执行流程
li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt, ...
- 看懂SqlServer执行计划
在园子看到一篇SQLServer关于查询计划的好文,激动啊,特转载.原文出自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.htm ...
- 我终于看懂了HBase,太不容易了...
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在我还不了解分布式和大数据的时候已经听说过HBa ...
- 透过源码看懂Flink核心框架的执行流程
前言 Flink是大数据处理领域最近很火的一个开源的分布式.高性能的流式处理框架,其对数据的处理可以达到毫秒级别.本文以一个来自官网的WordCount例子为引,全面阐述flink的核心架构及执行流程 ...
随机推荐
- mybatispluys-Mapper CRUD 接口
Mapper CRUD 接口 通用 CRUD 封装BaseMapper (opens new window)接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部 ...
- Html飞机大战(五):主角登场(英雄类编辑)
好家伙, 遇到了一些非常奇怪的bug index.html:179 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRender ...
- 流媒体协议扫盲(rtp/rtcp/rtsp/rtmp/mms/hls)
RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细 ...
- KingbaseESV8R3对于order by null列的处理
背景 客户遇到一个现象order by 列是null的时候,最后一行总是显示相同的值.不要问我为什么对空值排序,意义何在?客户代码如此,客户不愿意改代码,作为dba大家都懂的.客户认为即使对null排 ...
- KingbaseES 数据库删除功能组件
关键字: KingbaseES.卸载.删除功能 一.安装后检查 在安装完成后,可以通过以下几种方式进行安装正确性验证: 1. 查看安装日志,确认没有错误记录; 2. 查看开始菜单: 查看应用程 ...
- ACVF of ARMA(1, 1)
\(ARMA(1, ~ 1)\) process is a time series \(\left\{ X_{t} \right\}\) defined as: \[X_{t} - \phi X_{t ...
- c#中容易被忽视的foreach
有句俗语:百姓日用而不知.我们c#程序员很喜欢,也非常习惯地用foreach.今天呢,我就带大家一起探索foreach,走,开始我们的旅程. 一.for语句用的好好的,为什么要提供一个foreach? ...
- day03-代码实现02
多用户即时通讯系统03 4.编码实现02 4.2功能实现-拉取在线用户 4.2.1思路分析 客户端想要知道在线用户列表,就要向服务器发送请求(Message),因为只有服务器端保持着所有与客户端相连接 ...
- 通过管理接口配置ProxySQL
可以使用mysql客户端来连接管理接口,以下是使用admin凭据连接到本地6032端口的管理接口: $ mysql -u admin -padmin -h 127.0.0.1 -P6032 --pro ...
- 使用yum方式安装的openresty参数
nginx version: openresty/1.19.3.1 built by gcc 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC) built with Ope ...