• 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

  • 相关阅读:
    sql server 2005中模仿merge的使用方法
    c#中怎么控制session失效时间
    MasterPage,Page 2者之间事件的执行顺序
    ToolStripComboBox的DataSource和DataTable
    C#综合揭秘——细说多线程(上)(转载)
    SQL Server 2008 MERGE
    SQL output语句的用法
    SQL中使用update inner join和delete inner join
    C#综合揭秘——细说事务(转载)
    SQLMETAL :Linq对象生成
  • 原文地址:https://www.cnblogs.com/onroad2019/p/11796466.html
Copyright © 2020-2023  润新知