zoukankan      html  css  js  c++  java
  • 【转】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

  • 相关阅读:
    希望走过的路成为未来的基石
    第三次个人作业--用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次个人编程作业(更新至2020.02.07)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    spring cloud springboot 框架源码 activiti工作流 前后分离 集成代码生成器
    java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
  • 原文地址:https://www.cnblogs.com/hark0623/p/6089225.html
Copyright © 2011-2022 走看看