玩转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

  <。)#)))≦

玩转Linux之内存管理-free的更多相关文章

  1. Linux堆内存管理深入分析(下)

     Linux堆内存管理深入分析 (下半部) 作者@走位,阿里聚安全 0 前言回顾 在上一篇文章中(链接见文章底部),详细介绍了堆内存管理中涉及到的基本概念以及相互关系,同时也着重介绍了堆中chunk分 ...

  2. Linux堆内存管理深入分析(上)

    Linux堆内存管理深入分析(上半部) 作者:走位@阿里聚安全   0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏洞 ...

  3. 深入理解Linux中内存管理

    前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...

  4. Linux堆内存管理深入分析

    (上半部) 作者:走位@阿里聚安全 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏洞利用两种.国内关于栈溢出的资料相对较 ...

  5. 浅谈Linux的内存管理机制

    转至:http://ixdba.blog.51cto.com/2895551/541355 一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此, ...

  6. Linux内核内存管理算法Buddy和Slab: /proc/meminfo、/proc/buddyinfo、/proc/slabinfo

    slabtop cat /proc/slabinfo # name <active_objs> <num_objs> <objsize> <objpersla ...

  7. Linux的内存管理

    Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经 ...

  8. Linux堆内存管理深入分析 (上半部)【转】

    转自:http://www.cnblogs.com/alisecurity/p/5486458.html Linux堆内存管理深入分析(上半部) 作者:走位@阿里聚安全 0 前言 近年来,漏洞挖掘越来 ...

  9. Linux的内存管理机制

    原文作者:技术成就梦想 链接:http://ixdba.blog.51cto.com/2895551/541355 一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘 ...

随机推荐

  1. vi使用命令

    二.移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 ...

  2. 分治——sqtx

    题目描述 Given a string s, partition s such that every substring of the partition is a palindrome. Retur ...

  3. 一款带有CSS的单选框以及选中事件

    html <div class="radio radio-success"> <input type=" name="radioSingle1 ...

  4. caffe resize用interpolation

    opencv的resize默认的是使用双线性插值INTER_LINEAR,也可以是尝试其他的方式进行插值操作 if (param.random_interpolation_method()) { // ...

  5. 1.Mysql集群------Docker下的Mysql主从复制

    前言: 实话说,我想做的是Mysql集群架构. 我的计划是: 1.实现Docker下的Mysql主从复制 2.实现MyCat基于Mysql的读写分离 3.实现MyCat的分库分表 4.实现pxc集群 ...

  6. javascript入门笔记4-数组

    1.数组 var arr=new Array(); var myarray= new Array(8); //创建数组,存储8个数据. 注意: 1.创建的新数组是空数组,没有值,如输出,则显示unde ...

  7. vue项目中的函数封装

    项目中一般都会有fun.js这类的文件,里面有各种的如转换时间格式的,处理转换的等等函数方法. 其实经常用到的去获取基本数据的接口也可以封装成一个方法,方便复用. 如上面所标,获取列表数据之前需要先获 ...

  8. windows服务器配置tomcat开机自动启动

    背景:最近在做服务器部署的工作,开始的时候都是手动将tomcat进行启动的,但是在遇到几次服务器重启后发现这样太过麻烦,影响项目运行,故事就从这里开始了. 我们的项目是使用spring-boot进行开 ...

  9. LeetCode47.Permutations II(剑指offer38-1)

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  10. Windosw系统——常见的问题

    1. 写在某些软件后就无法打开网页,但可以上QQ. 在卸载了一些VPN或USB无线设备后,发现自己网页打不开,但是ping能ping通,也可以登录QQ. 解决办法: (1): 开始运行——regedi ...