Linux下如何查内存信息,如内存总量、已使用量、可使用量。
经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实。
当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后),当程序结束后内存没有被释放。空闲内存少的可怜,心里总不踏实。
Linux操作系统的内存管理方式与Windows不同,Linxu会尽量多的利用内存,让尽可能多的内存参与工作(做cache)以提高性能。
所以你看到的空闲内存总是很小,当你的程序需要更多内存时,Linxu系统会把做cache的内存还给你,让你来运行你的程序。

图1

free -m :查看内存情况,单位为MB。
total 内存总数
used 已经使用的内存数(我的程序使用内存数量+系统缓存使用的内数量)
free 空闲的物理内存数(是真正的空闲,未被任何程序占用)
shared 多个进程共享的内存总额
buffers 磁盘缓存(Buffer Cache)的大小(可提高系统I/O调用的性能)
cached  磁盘缓存(Page Cache)的大小(可提高系统I/O调用的性能)
-buffers/cache 表示已被我们的程序使用的内存数,计算方法:used - buffers - cached
+buffers/cache 表示还可已被我使用的内存数,计算方法:free + buffers + cached

操作系统目前可用内存总量=free + buffers + cached,上图是1155M

buffers是用来给块设备做的缓冲大小、buffers是用来存储目录里面有什么内容,权限等等
cached用来给文件做缓冲,用来记忆我们打开的文件.

即使你的程序运行结束后,Cache Memory也不会自动释放。
这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存(free)会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。
如果你希望手动去释放Cache Memory也是有办法的。

手动释放缓存
---------------------------------------
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:

cat /proc/sys/vm/drop_caches   查看默认值

先手动执行sync命令,sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。

# echo 3 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3

再来运行free命令。可以看出来有效的释放了buffer和cache。

有关/proc/sys/vm/drop_caches的用法在下面进行了说明:
/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first

通过Windows任务管理器查看内存--Win2008/Win7
---------------------------------------------------------------------------
通过任务管理器有“性能”选项卡,可查看“物理内存使用率”。
可直接查看物理内存使用率的百分比。
由于物理内存不够时,会把当前不活动程序挤到“虚拟内存”上,让出物理内存给当前程序使用,
所以一直都无法看到物理内存使用率达到100%,只会看到“页面文件(图中叫‘提交’)”的量在一直增长。
图2

正方型红框内:已使用的物理内存(不含虚拟内存)
物理内存--总数:物理内存总量
物理内存--已缓存:操作系统的“磁盘缓存”占用的内存
物理内存--可用:你还可以使用的内存,是(空闲+已缓存),是不是和Linux很像
物理内存--空闲:真正空闲的物理内存

系统--提交:页面文件使用率,页面文件(PF)总量=物理内存+虚拟内存

通过Windows任务管理器查看内存--Win2003/Win Xp
---------------------------------------------------------------------------
通过任务管理器有“性能”选项卡,可查看“页面文件使用率(PF)”。
无法直接查看内存使用量的百分比,查看不如win 7方便。
页面文件(PF)总量=物理内存+虚拟内存

图3

Linux 物理内存 buffer cache的更多相关文章

  1. linux page buffer cache深入理解

    Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = ...

  2. Linux中buffer/cache,swap,虚拟内存和page ++

    1.Buffer 和 cache Free 命令相对于top 提供了更简洁的查看系统内存使用情况: [apptest@vs022 ~]$ free -m               ——以MB为单位  ...

  3. Linux 中 Buffer/Cache内存占用过高解决方法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显 ...

  4. Linux清理Buffer/Cache内存空间让系统变流畅

    释放缓存区内存的方法    a)清理pagecache(页面缓存) # echo 1 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_ ...

  5. 【Linux】基于Linux的buffer和cache学习

    缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读 ...

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

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

  7. linux下的缓存机制及清理buffer/cache/swap的方法梳理 (转)

    一.缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...

  8. Linux内存管理Swap和Buffer Cache机制

    Linux内存管理Swap和Buffer Cache机制 一个完整的Linux系统主要有存储管理,内存管理,文件系统和进程管理等几方面组成,贴出一些以前学习过的一个很好的文章.与大家共享!以下主要说明 ...

  9. Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制

    Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches   Slab内存管理机制 SLUB内存管理机制 http://w ...

随机推荐

  1. yii2中关联查询

    yii2 ActiveRecord多表关联以及多表关联搜索的实现 一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecor ...

  2. Python: Flask框架简单介绍

    接触Python之后我第一次听说Flask,我就根据自己搜罗的知识尽可能简洁的说出来.如果不准确的地方还请指正,谢谢. Flask是什么?             Flask是基于Python编写的微 ...

  3. 【R】书籍推荐

    From: http://xccds1977.blogspot.com/2013/02/r.html http://www.1point3acres.com/bbs/thread-51301-1-1. ...

  4. Linux基础命令---tune2fs

    tune2fs tune2fs允许系统管理员在Linux ext2.ext3或ext4文件系统上调整各种可调的文件系统参数.这些选项的当前值可以使用-l选项显示,也可以通过使用dumpe2fs (8) ...

  5. 文件和打印机共享 win7 and xp

    Win7 摘自:https://www.xp510.com/article/4249.html 首先开启服务 方法:开始---所有程序---附件---运行---输入services.msc----确定 ...

  6. 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理

    转:http://blog.csdn.net/suhuaiqiang_janlay/article/details/60466333 本人找几篇讲得好的来整理一下. (1)问题的由来: (2)动态ip ...

  7. C++ 电路布线/最短路径问题

    问题描述 用二维数组表示地图,若值为 1 则表示有障碍物,若值为 0 则表示可以通行. 输入: m*n 的二维数组,布线起点坐标,布线终点坐标. 输出: 最短布线距离以及对应的布线路径. 问题分析 从 ...

  8. TED #08# Learn to read Chinese ... with ease!

    ShaoLan: Learn to read Chinese ... with ease! Pre-requisites calligraphermy most treasured memoriesw ...

  9. 【运行错误】Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.

    代码如下: <html> <head> <script> /*window.frames[]可以通过下标或名称访问单独的frame*/ window.onload= ...

  10. C简介与环境配置

    C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的.C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现. 在 1978 年,布莱 ...