zoukankan      html  css  js  c++  java
  • linux的top下buffer与cache的区别

    buffer:
       缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据
    的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据
    时,速度快的设备的操作进程不发生间断。
    cache:
          当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,
    这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会
    自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。
    其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有
    内存可用。如果你希望手动去释放Cache Memory也是有办法的
     
     
    我们使用的LinuxWindows可不太一样,用top命令得出来的可能不是真实使用的内存,用free命令第二行才是系统真实使用的内存
     
    在终端中敲入:free
    显 示: total  used  free  shared  buffers  cached
    Mem:    255268 238332  16936    0      85540    126384
    -/+ buffers/cache:26408  228860
    系统的总物理内存:255268Kb(256M),但系统 当前真正可用的内存并不是第一行free 标记的 16936Kb,它仅代表未被分配的内存。
    我们使用total1、used1、 free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。
    total1:表示物理 内存总量。
    used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
    free1:未被分配的内存。
    shared1:共享内存,一般系统不会用到,这里也不讨论。
    buffers1: 系统分配但未被使用的buffers 数量。
    cached1:系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。
    used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量。
    free2:未被 使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
    可以整理出如下等式:
    total1 = used1 + free1
    total1 = used2 + free2
    used1 = buffers1 + cached1 + used2
    free2 = buffers1 + cached1 + free1
  • 相关阅读:
    【网络流24题----15】汽车加油行驶问题
    【网络流24题】最小路径覆盖问题
    网络流二·最大流最小割定理
    贪吃蛇
    【SCOI2008】着色方案
    DARK的锁链
    【NOIP2014】飞扬的小鸟
    [NOIP2012] 借教室
    [NOIP2012] 开车旅行
    [NOIP2012] 国王游戏
  • 原文地址:https://www.cnblogs.com/hanframe/p/7117118.html
Copyright © 2011-2022 走看看