• linux 内存


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

    转自:http://elf8848.iteye.com/blog/1995638

    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
  • 相关阅读:
    一个星期自动态的网站设计
    java特权制度设计篇
    mac默认截图、截图代码
    NSDateFormatter
    vlan 以及 Linux实现的IEEE 802.1Q VLAN
    gtk+blade+anjuta 的简单实例
    NetBSD是个开源到源码的系统
    创作gtk源码级vim帮助文档 tags
    linux 怎么使用一个c/c++库
    linux 终端控制-- 多彩输出 格式排版
  • 原文地址:https://www.cnblogs.com/sgh69/p/11993768.html
Copyright © 2020-2023  润新知