Linux命令---手动释放内存

1、查看内存使用情况 free -m/free -g 

  

  • total:内存总数
  • used:已经使用的内存数
  • free:空闲的内存数
  • shared:当前已经废弃不用
  • buffers Buffer:缓存内存数
  • cached Page:缓存内存数

  第一行:
    Mem的  Total=used+free        used使用内存     free空闲内存   
    shared          表示被几个进程共享的内存的。
    buffer  缓冲  是用于存放要输出到disk(块设备)的数据。
                    是根据磁盘的读写 设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
    cache  缓存 是存放从disk上读出的数据。是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。

      其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
                     如果cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

  第二行:
    这一行表示两项   -buffers/cache  和  + buffers/cache
     -buffers/cache   = used -(buffers+cache)   表示使用的内存中不计算buffers和cache,系统使用内存量
    + buffers/cache  =free+( buffers+cache)    表示系统空闲内存与buffers、cache的和

  第三行:
    交换内存  使用量  空限量

  Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是linux内存管理中非常出色的一点,所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,linux会将缓存让出给程序使用,这样达到对内存的最充分利用,所以真正剩余的内存是free+buff/cache

        但是有些时候大量的缓存占据空间,这时候应用程序回去使用swap交换空间,从而使系统变慢,这时候需要手动去释放内存,释放内存的时候,首先执行命令 sync 将所有正在内存中的缓冲区写到磁盘中,其中包括已经修改的文件inode、已延迟的块I/O以及读写映射文件,从而确保文件系统的完整性

2、sync

  手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

3、释放 echo 3 > /proc/sys/vm/drop_caches 

  0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理
  1:释放页缓存
  2:释放dentries和inodes
  3:释放所有缓存

  如果现在想让操作系统重新分配内存,那么设置drop_caches的值为0即可

  echo 0 > /proc/sys/vm/drop_caches

原文地址:https://www.cnblogs.com/onroad2019/p/11796466.html