• linux的top下buffer与cache的区别、free命令内存解释


    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
  • 相关阅读:
    VC++中字符串编码的转换
    C与C++之间相互调用
    获取Windows下某进程监听的TCP/UDP端口
    C# byte数组与Image的相互转换
    C# IP地址与整数之间的转换
    NPOI读写Excel
    C#调用ArcGIS REST服务
    粗俗易懂的了解一下PHP的垃圾回收机制(好文章-转)
    从悲观锁和乐观锁的角度怎么避免死锁
    百度地图分布图(百度地图api司机位置实时定位分布图)
  • 原文地址:https://www.cnblogs.com/huangmr0811/p/5570950.html
Copyright © 2020-2023  润新知