Linux内存操作之清理缓存

在这里插入图片描述

在日常的开发工作中,经常会遇到服务器的内存空间不足的情况,这个时候,我们需要清理一下服务器的缓存空间。

使用场景

紧急内存回收

在极端情况下,如果系统内存极度紧张且当前没有运行关键服务或任务,管理员可能选择清理缓存以快速回收内存空间,尽管这并非长期解决内存不足的最好方式。

诊断内存问题

如果怀疑系统内存管理存在问题,或者想验证应用程序是否因为过度依赖缓存而导致异常行为,可以清除缓存来复现问题。

开发环境调试

开发人员在进行内核模块开发、文件系统测试或其他与内存使用紧密相关的软件开发时,可能需要重复加载相同的数据而不想受之前缓存内容的影响。

基准测试分析

当需要对磁盘I/O性能进行基准测试时,为了确保每次测试的公平性,会先清空缓存,以便测量在没有缓存帮助下的实际读写速度。

服务器维护

在计划性的系统维护期间,尤其是当即将对大量数据进行处理或移动时,可能会预先清理缓存,以确保所有新的I/O操作都从底层存储开始读取。

参数解释

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

sync一下

sync

我们在清理缓存前应该先sync下,系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中,担心在操作的过程中因为一些原因遗失数据,释放缓存前先将数据写入磁盘。

释放缓存

释放页面缓存
 echo 1 > /proc/sys/vm/drop_caches

这个命令是释放页面缓存(page cache)。主要包含最近从磁盘读取的文件内容,以便后续访问时能够快速提供服务。清理这部分缓存意味着下次访问这些文件时将重新从磁盘读取数据。

释放目录项和索引缓存
echo 2 > /proc/sys/vm/drop_caches

该命令已经过时或者在某些Linux内核版本中不支持。早期的一些内核可能用这个值来清除目录项缓存(dentries)和索引(inode)缓存,但现在这两个缓存通常与page cache一起被清理。

释放所有缓存
echo 3 > /proc/sys/vm/drop_caches

这个命令是最常用的选项,它会同时清理页面缓存(page cache)、目录项缓存(dentries)和索引(inode)缓存。这将会最大程度地释放内存,但也可能导致暂时的系统性能下降,特别是正在进行大量I/O操作时。

注意事项

执行这些操作前,请务必谨慎,因为它们不会区分哪些缓存是重要的或是当前正在使用的。

在生产环境中这样操作,可能会对运行中的应用程序,产生负面影响,除非是为了解决特定问题或进行测试,否则不建议随意使用此方法来释放缓存。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值