千家信息网

详解Linux手动释放缓存的方法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Linux释放内存的命令:syncecho 1 > /proc/sys/vm/drop_cachesdrop_caches的值可以是0-3之间的数字,代表不同的含义:0:不释放(系统默认值)1:释放页
千家信息网最后更新 2026年11月02日详解Linux手动释放缓存的方法

Linux释放内存的命令:

syncecho 1 > /proc/sys/vm/drop_caches

drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存

释放完内存后改回去让系统重新自动分配内存。

echo 0 >/proc/sys/vm/drop_cachesfree -m #看内存是否已经释放掉了。

如果我们需要释放所有缓存,就输入下面的命令:

echo 3 > /proc/sys/vm/drop_caches

######### Linux释放内存的相关知识 ###############

在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空 间影响性能,例如当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。,此时就需 要执行释放内存(清理缓存)的操作了。

Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分 缓存已经用不到了。这个时候,我们难道只能眼睁睁的看着缓存把内存空间占据掉吗?所以,我们还是有必要来手动进行Linux下释放内存的操作,其实也就是 释放缓存的操作了。/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改 /proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。要达到释 放缓存的目的,我们首先需要了解下关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就 是不释放缓存。

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

释放内存前先使用sync命令做同步,以确保文件系统的完整性,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

[root@fcbu.com ~]# free -m       total    used    free   shared  buffers   cachedMem:     7979    7897     82     0     30    3918-/ buffers/cache:    3948    4031Swap:     4996    438    4558

第一行用全局角度描述系统使用的内存状况:

total 内存总数

used 已经使用的内存数,一般情况这个值会比较大,因为这个值包括了cache 应用程序使用的内存

free 空闲的内存数

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

buffers 缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)

cached 缓存,用于已打开的文件

第二行描述应用程序的内存使用:
-buffers/cache 的内存数:used - buffers - cached
buffers/cache 的内存数:free buffers cached
前个值表示-buffers/cache 应用程序使用的内存大小,used减去缓存值
后个值表示 buffers/cache 所有可供应用程序使用的内存大小,free加上缓存值

第三行表示swap的使用:
used 已使用
free 未使用

可用的内存=free memory buffers cached。

为什么free这么小,是否关闭应用后内存没有释放?
但实际上,我们都知道这是因为Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:-/ buffers/cache: 3948 4031 ,这才是系统可用的内存大小。

实际项目中的经验告诉我们,如果因为是应用有像内存泄露、溢出的问题,从swap的使用情况是可以比较快速可以判断的,但free上面反而比较难查看。我觉得既然核心是可以快速清空buffer或cache,但核心并没有这样做(默认值是0),我们不应该随便去改变它。

一般情况下,应用在系统上稳定运行了,free值也会保持在一个稳定值的,虽然看上去可能比较小。当发生内存不足、应用获取不到可用内存、OOM错 误等问题时,还是更应该去分析应用方面的原因,如用户量太大导致内存不足、发生应用内存溢出等情况,否则,清空buffer,强制腾出free的大小,可 能只是把问题给暂时屏蔽了,所以说一般情况下linux都不用经常手动释放内存。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

内存 缓存 文件 系统 应用 情况 程序 大小 应用程序 磁盘 可以通过 命令 实际 问题 手动 不同 也就是 实际上 效率 方面 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 互联网科技工作委员会主任 江苏根荣互联网科技 中关村互联网科技集团 互联网未来科技 万易互联网科技有限公司 互联网科技视频 浩特互联网科技 天津摩尔互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 互联网为啥属于高科技 速维有品互联网信息科技(苏州)有限公司 996高科技互联网公司 佛山市拉法互联网科技有限公司 世界互联网领先科技成果获奖 梅州GM互联网络科技有限公司 产业互联网科技服务公司 湖北辰鑫科技互联网 恒生科技指数 中概互联网 恒生互联网科技趋势 互联网科技有限公司 深圳九邦互联网科技有限公司 科技互联网创业计划书 盛创互联网科技有限公司 福建科技产业互联网发展 昊天互联网科技有限公司 宁波跨境商互联网科技有限公司 全球科技与互联网公司市值变化 平安好医生打造互联网科技医疗 前海云享互联网科技
0