清理buff/cache,释放更多的cache,让free大一点

那么 buff/cache主要是来干嘛的呢?

Linux具有先进的缓存机制,会针对会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读     写)和Page Cache(针对文件inode的读写)进行缓存操作用来提高读写效率。但是在进行了大量文件操作之后,缓存会把内存资源基本用光,虽然文件读取效率提高了,但是物理内存会逐渐被吃光。那么为什么操作系统不会主动回收呢,原来是因为drop_caches的默认参数设置的就是不释放的,

清理前

# !/bin/bash 
# clean buff/cache
# author: hobby

echo "Start cleaning buff/cache"

# 将所有未写的系统缓冲区写到磁盘中
sudo sync;sync;sync   
#延迟5秒
sleep 5  
# 释放页缓存
sudo echo 1 > /proc/sys/vm/drop_caches
# 释放dentries和inodes
sudo echo 2 > /proc/sys/vm/drop_caches
# 释放所有缓存
sudo echo 3 > /proc/sys/vm/drop_caches

echo "cleaning ending......"

清理后

效果还是有的

在某位博主那看到下面三段话,觉得十分有理(附上来源https://www.jianshu.com/p/016f7cf0380d)

       如果因为是应用有像内存泄露、溢出的问题,从swap的使用情况是可以比较快速可以判断的,但free上面反而比较难查看。相反,如果在这个时候,我们告诉用户,修改系统的一个值,“可以”释放内存,free就大了。用户会怎么想?不会觉得操作系统“有问题”吗?所以说,既然核心是可以快速清空buffer或cache,也不难做到(这从上面的操作中可以明显看到),但核心并没有这样做(默认值是0),我们就不应该随便去改变它。

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

      排除内存不足的情况外,除非是在软件开发阶段,需要临时清掉buffer,以判断应用的内存使用情况;或应用已经不再提供支持,即使应用对内存的时候确实有问题,而且无法避免的情况下,才考虑定时清空buffer。(可惜,这样的应用通常都是运行在老的操作系统版本上,上面的操作也解决不了)

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要释放 Linux 系统中的 buff/cache,可以使用以下命令: ``` sudo sync && sudo echo 3 | sudo tee /proc/sys/vm/drop_caches ``` 这个命令先将所有缓存数据写入磁盘,然后清空 buff/cache。但是请注意,这个操作影响系统性能,因为缓存数据在之后重新加载到内存中。所以,只有在特定场景下才需要执行这个操作,比如在进行性能测试或者需要释放内存的紧急情况下。 ### 回答2: 释放buff/cache是指清除操作系统内存中的缓存区域,以释放内存空间以供其他程序使用。 在计算机系统中,操作系统将一部分内存用于缓存磁盘上的数据,以提高数据读取和写入的速度。 这些缓存被称为buff/cache(缓冲和缓存)。 释放buff/cache可以帮助磁盘上的数据及时写入到磁盘,以防止数据丢失。 要释放buff/cache,可以通过以下步骤进行: 1. 打开终端或命令提示符窗口。 2. 输入以下命令以查看当前内存使用情况: ``` free -h ``` 这将显示内存的详细信息,包括buff/cache的使用情况。 3. 输入以下命令以释放buff/cache: ``` sudo sh -c "echo 3 > /proc/sys/vm/drop_caches" ``` 这将使用超级用户权限运行一个命令,将值“3”写入到drop_cache文件中,从而释放buff/cache。 4. 再次输入以下命令以验证buff/cache是否已被释放: ``` free -h ``` 如果buff/cache的数值显著降低,则表明buff/cache已被成功释放释放buff/cache可以增加系统中可用的内存,从而提高系统性能和响应速度。然而,释放buff/cache并不是所有情况下的必要操作,只有在系统内存不足并且需要临时释放内存空间以运行其他高优先级任务时才建议使用。如果系统具有足够的内存,并且无需释放buff/cache释放内存,则不需要进行此操作。 ### 回答3: 释放buff/cache是指清除操作系统中的缓存数据,以腾出内存空间供其他程序或进程使用。缓存是操作系统为提高性能而预先加载并保存的数据,包括磁盘读写的缓存、网络传输的缓存等。释放buff/cache的操作通常在需要大量内存的程序运行前执行,以确保程序获得足够的可用内存。 释放buff/cache的具体方法因操作系统而异。在Linux系统中,可以通过执行"echo 3 > /proc/sys/vm/drop_caches"命令来释放缓存。该命令中,数字3表示要释放的类型,其中1表示释放页缓存,2表示释放dentry以及inode缓存,3表示同时释放页缓存、dentry以及inode缓存。当然,在释放buff/cache之前需要获得管理员权限。 释放buff/cache的目的是为了提高系统的可用内存,从而避免因内存不足而导致的系统变慢或崩溃。然而,值得注意的是,清除缓存也可能导致数据的重新加载,从而降低一些操作的性能。因此,只有在确实需要释放大量内存并且对性能要求不高的情况下,才应该考虑释放buff/cache

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hobby云说

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值