细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.

先来说说free命令

[root@server ~]# free -m

total       used       free     shared   buffers     cached

Mem:           249        163         86         0         10         94

-/+ buffers/cache:         58        191

Swap:          511          0        511

其中:

total 内存总数

used 已经使用的内存数

free 空闲的内存数

shared 多个进程共享的内存总额

buffers Buffer Cache和cached Page Cache 磁盘缓存的大小

-buffers/cache 的内存数:used - buffers - cached

+buffers/cache 的内存数:free + buffers + cached

可用的memory=free memory+buffers+cached

有了这个基础后,可以得知,我现在used为163MB,free为86,buffer和cached分别为10,94

那么我们来看看,如果我执行复制文件,内存会发生什么变化.

[root@server ~]# cp -r /etc ~/test/

[root@server ~]# free -m

total       used       free     shared   buffers     cached

Mem:           249        244          4         0          8        174

-/+ buffers/cache:         62        187

Swap:          511          0        511

在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐都被cached吃掉了.别紧张,这是为了提高文件读取效率的做法.

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。"

那么有人说过段时间,linux会自动释放掉所用的内存,我们使用free再来试试,看看是否有释放>?

[root@server test]# free -m

total       used       free     shared   buffers     cached

Mem:           249        244          5         0          8        174

-/+ buffers/cache:         61        188

Swap:          511          0        511

MS没有任何变化,那么我能否手动释放掉这些内存呢???回答是可以的!

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存.操作如下:

[root@server test]# cat /proc/sys/vm/drop_caches

0

首先,/proc/sys/vm/drop_caches的值,默认为0

[root@server test]# sync

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

[root@server test]# echo 3 > /proc/sys/vm/drop_caches

[root@server test]# cat /proc/sys/vm/drop_caches

3

将/proc/sys/vm/drop_caches值设为3

[root@server test]# free -m

total       used       free     shared   buffers     cached

Mem:           249         66        182         0          0         11

-/+ buffers/cache:         55        194

Swap:          511          0        511

再来运行free命令,发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB.那么有效的释放了buffer和cache.

带记录的SHELL脚本文件

SHELL文件下载

游客,如果您要查看本帖隐藏内容请回复

使用方法:

解压之后把free.sh 上传到 /root 目录下

然后执行 crontab -e

摁下          i        进入编辑

*/5 * * * * sh ~/free.sh 10复制代码

把上面这句话 粘贴进去(如果之前有定时任务 请注意换行)

摁下            esc                       退出编辑模式

摁下            :wq                      退出

crontab -l  查看当前所有的定时任务

如果能看到上面的命令 表示正确

命令解释:*/5  表示每隔5分钟执行一次检测    */1  表示每分钟

sh  ~/free.sh  10    剩余内存  小于等于 总内存 的    10% 的时候才释放  20 就是剩余20%   请控制在 1--100 内的  正整数

sh  ~/free.sh  10   比如你的总内存是 1000M  当剩余 100M 的时候释放一次内存空间

linux定时释放内存,定时释放Linux 内存 带释放记录相关推荐

  1. linux回收内存的方法,linux释放内存的方法

    Linux 释放内存方法 先看看内存使用状况 [root@node1 ~]# free -m total used free shared buffers cached Mem: 8004 6557 ...

  2. linux 内存清理cached,Linux cached内存释放

    查看系统内存使用情况 使用 free 命令,可以查看内存使用情况: free -s 2; 可以两秒刷新一次查看. 可以看到 cached 几乎占用了所有的内存. 释放 cached 内存 释放方法有三 ...

  3. 【linux】free和top显示可用内存不一致|free显示内存90%但是top却看不到谁用

    free和top显示可用内存不一致 free可用内存偏少是top相对free没有统计Slab.这也是导致两者差别的主要原因. 可以使用 cat /proc/meminfo看到内存的更具体的使用情况 以 ...

  4. Windows内存管理和linux内存管理

    windows内存管理 windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或 ...

  5. linux内存源码分析 - 内存压缩(同步关系)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 最近在看内存回收,内存回收在进行同步的一些情况非常复杂,然后就想,不会内存压缩的页面迁移过程中的同步关系也 ...

  6. linux 物理内存统计,说说free命令  + Linux可用内存统计方法

    关键在于两个字段,buffers和cached. 你经常会发现Linux系统用了一段时间后,内存所剩无几,free命令,一看,内存全跑到 buffers和cached里面了:这个现象是正常的.访问过的 ...

  7. Linux fs清理文件,linux找出已经删除但磁盘空间未释放的大文件并清空

    linux找出已经删除但磁盘空间未释放的大文件并清空 1.找出已经删除但磁盘空间未释放的文件 如果文件已经删除,但实际的磁盘空间未释放,这个时候文件句柄fd相关信息还在内存中,可以通过lsof命令找出 ...

  8. linux为系统分配内存,Linux操作系统知识讲解:走进Linux 内存分配算法

    Linux 内存分配算法 内存管理算法--对讨厌自己管理内存的人来说是天赐的礼物 1.内存碎片 1) 基本原理 产生原因:内存分配较小,并且分配的这些小的内存生存周期又较长,反复申请后将产生内存碎片的 ...

  9. linux下使用free命令查看实际内存占用

    linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位).而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内 ...

最新文章

  1. oracle无法登录em,oracle em登陆不了,账户密码过期
  2. Mongodb数据库介绍
  3. Rushcrm:客户关系管理适合的才是好的
  4. 【MySQL】Got fatal error 1236原因和解决方法
  5. HTML5 速查列表
  6. 15数码 java,15数码问题
  7. ASP.NET中进行消息处理(MSMQ)
  8. Python【3】-字典dic和集合set
  9. NIFI的ERROR报错信息如何清空
  10. JdbcTemplate操作
  11. jqueryd登录异步请求 java,ajaxd的js和jquery实现
  12. 关于.vbs文件恶搞,小伙伴电脑的
  13. QT中三种构建菜单栏的方法
  14. java多线程的api_java多线程之:线程对象一些api
  15. input 密码框调出手机的数字键盘
  16. automation服务器不能创建对象问题解决
  17. 猴子香蕉问题——枚举
  18. The bean sellergoods.FeignClientSpecification could not be registered. A bean with that name has a
  19. ICCV 2021 | 视觉Transformer中的相对位置编码
  20. MATLAB矩阵与阵列

热门文章

  1. numpy.random.randn()与rand()的区别
  2. php仿制网站,如何仿制网站(一模一样),制造后台管理系统CMS
  3. HTML5基础:布局和标签
  4. 计算机在生物工程的应用,计算机在化学化工及生物工程中的应用
  5. Apache Zeppelin 简单介绍,以及下载地址
  6. 值得珍藏的28本股市投资经典著作
  7. 时间序列分析-----2---时间序列预处理
  8. Linux第五次学习笔记
  9. WebP支持:超乎你想象
  10. 干货·Doherty功放设计