查看Linux服务器下的内存使用情况,可以使用命令free -m。注意此命令只在Linux下有效,在FreeBSD中没有此命令。命令如下所示:

used:已经使用的内存数

free:空闲的内存数

shared:多个进程共享的内存总额

-buffers/cache:(已用)的内存数,即used-buffers-cached

+buffers/cache:(可用)的内存数,即free+buffers+cached

得出结论:

可用内存的计算公式为:

可用内存=free+buffers+cached,即215MB+11MB+57MB=253MB

Linux的内存是拿来用的,而不是拿来看的。
与一个朋友探讨Linux的使用情况时,他问我为什么Linux使用的内存这么高。他机器上1GB的内存free才232MB,而Windows
XP才用了200MB不到的样子。这其实是被Linux的free命令之表象迷惑了,Linux的内存使用是很有讲究的。还是举例说明,如下的free命
令所显示的是当前内存的使用情况,-m的意思是用M个字节来显示内容,我们来一起看看。
[root@bjsjzc ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1002       769         232          0        62        421
-/+ buffers/cache:       286        715
Swap:         1153        0       1153

在第一部分Mem行中有如下参数。

total:内存总数,即378MB

used:已经使用的内存数,即769MB

free:空闲的内存数,即232MB

shared:当前已经废弃不用,总是0

buffers Buffer:缓存内存数,即62MB

cached Page:缓存内存数,即421MB

其中,内存总数与已使用内存数和空闲内存数的关系是:

total(1002M)=used(769M)+free(232M)

在第二部分内容(-/+buffers/cache)中各参数如下所示。

(-buffers/cache):used内存数,即286MB(指的是第一部分Mem行中的used-buffers-cached)。

(+buffers/cache):free内存数,即715MB(指的是第一部分Mem行中的free+buffers+cached)。

可见-buffers/cache反映的是被程序实实在在用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换(swap)分区,大家应该都明白,这里就不再讲了。


可能大家看了上面的解释还是不太明白。比如:第一部分(Mem)与第二部分(-/+buffers/cache)的结果有关,used和free为什么这
么奇怪?其实我们可以从两个方面来分析。对操作系统来讲这两项是Mem的参数,buffers/cached都属于被使用,所以它认为free只有
232MB;对应用程序来讲+buffers/cached等同于可用的内存,因为buffer/cached可提高程序执行的性能,当程序使用内存
时,buffer/cached很快就会被使用。所以从应用的角度来看,应以(-/+buffers/cache)的free和used为主,即我们主要
看与它相关的free和used就可以了。另外告诉大家一些常识,为了提高磁盘和内存的存取效率,对Linux做了很多精心的设计,除了对dentry进
行缓存(用于VFS、加速文件路径名到inode的转换)外,还采取了两种主要Cache方式:Buffer Cache和Page
Cache。前者用于针对磁盘块的读写,后者用于针对文件inode的读写。这些Cache能有效地缩短I/O系统调用(比如read、write、
getdents)的时间。


Linux中,内存是拿来用的,不是拿来看的。而在Windows中,无论你的真实物理内存有多少,它都会用硬盘交换文件来读,即使是内存还有一大部分。
这也就是Windows常常提示虚拟空间不足的原因。可以想见,硬盘怎么会快过内存,所以我们在观察Linux的内存使用情况时,只要没发现用swap的
交换空间,就不用担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用的标准。

关于Linux的内存(free -m)的更多相关文章

  1. 如何使用Linux命令行查看Linux服务器内存使用情况?

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

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

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

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

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

  4. Linux系统内存占用90%以上 ?

    问题: [root@dbserver01 zx_epp_db]# free -m total used free shared buffers cached Mem: 15953 14706 1246 ...

  5. 【转】Linux查看内存大小和插槽

    原文https://wsgzao.github.io/post/linux-memory/ Linux 查看内存的插槽数,已经使用多少插槽,每条内存多大,已使用内存多大 dmidecode | gre ...

  6. linux 查看内存的插槽数

    [root@web ~]# dmidecode|grep -P -A5 "Memory\s+Device"| grep Size | grep -v Range #linux查看内 ...

  7. 【转】Linux 查看内存(free buffer cache)

    转自:http://elf8848.iteye.com/blog/1995638 Linux下如何查内存信息,如内存总量.已使用量.可使用量.经常使用Windows操作系统的朋友,已经习惯了如果空闲的 ...

  8. 查看Linux服务器内存使用情况

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

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

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

随机推荐

  1. 通过android 客户端上传图片到服务器

    昨天,(在我的上一篇博客中)写了通过浏览器上传图片到服务器(php),今天将这个功能付诸实践.(还完善了服务端的代码) 不试不知道,原来通过android 向服务端发送图片还真是挺麻烦的一件事. 上传 ...

  2. Tomcat遇到的问题

    1. java.lang.OutOfMemoryError: PermGen space 启动tomcat服务时,报这个错,查了下是,内存泄露 PermGen space的全称是Permanent G ...

  3. [转]Filter实现处理中文乱码,转义html标签,过滤敏感词

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  4. NSMutableURLRequest和NSURLConnection用Post方式上传照

    需求:上传一张照片和内容,内容包括:用户编辑的内容.经纬度.地点等等,就是类似发一个说说.这就是一个很平常的功能,实现的方式想必各位能想到很多. 接下来我想用系统的NSURLConnection来实现 ...

  5. python中的字符数字之间的转换函数

    int(x [,base ])         将x转换为一个整数     long(x [,base ])        将x转换为一个长整数     float(x )               ...

  6. JSP 中的 tag 文件

    在jsp文件中,可以引用 tag 和tld 文件,本文主要针对 tag 对于tag 文件 1)将此类文件放在 WEB-INF 下,比如 /WEB-INF/tags,tags 是目录,其下可以有多个.t ...

  7. js-比较两个日期的大小

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  8. C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级

    构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用--简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的 ...

  9. js学习笔记3---自定义属性

    1.自定义属性-----JS可以为任何 HTML元素 添加 任意个 自定义属性 方法:元素.属性 = 属性值 如:aBtn[0].abc = 123; 2.添加索引值,匹配数组 for(i=0; i& ...

  10. 【HDU 5835】Danganronpa(分配礼物)

    10种礼物,每种有ai个,每个小朋友分两个礼物,其中普通礼物要求相邻两人的不能一样,求最多分给几个小朋友. sum/2是最多的情况.什么时候发不了那么多,就是当max很大,无论怎么发,都发不完max. ...