![如何清理或禁用内存缓存?](https://linux22.com/image/820169/%E5%A6%82%E4%BD%95%E6%B8%85%E7%90%86%E6%88%96%E7%A6%81%E7%94%A8%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98%EF%BC%9F.png)
系统启动后,几分钟内我的内存缓存就填满了,它开始使用交换。这是 /proc/meminfo 的屏幕截图。
但是,如果我可以禁用此进程/在此之后清理一次缓存,我认为我的系统会在一定程度上加快速度。如果我错了,请纠正我。
我也尝试过 Bleachbit 内存清理,但它似乎无法正确清理内存缓存。此外,该功能仍处于试验阶段。
这里已经有一个类似的问题:我如何禁用预取缓存?,但它涉及 Ubuntu Server,并且答案还涉及手动设置等。
所以,我想知道是否有一些软件可以禁用/启用 Ubuntu 12.04 的内存缓存。
答案1
笔记:Linux 不会“吃掉”你的 RAM!请查看 Geirha 的很好的答案下面了解为什么...
在上述说明之后,如果您仍然觉得“清理”缓存可能会有帮助,那么您当然可以尝试:它是终端中的一行代码:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
没有简单的方法禁用缓存,但你可以通过尽可能频繁地清理缓存来达到同样的效果每一分钟, 如果你想:
使其成为计划任务
按
Alt-F2
,输入gksudo gedit /etc/crontab
,然后在底部附近添加以下行:*/15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches
每 15 分钟清洁一次。您可以设置为 1 分钟或 5 分钟如果你真的想 通过将第一个参数更改为
*
或*/5
代替*/15
一行代码即可知道除缓存之外的实际可用 RAM
Geirha 的回答解释了细节,但简而言之,你可以通过以下方式获得可用的兆字节数:
free -m | sed -n -e '3p' | grep -Po "\d+$"
在我的 2GB 命令行服务器上返回极其健康1835
。
答案2
救命!Linux 占用了我的内存!
www.linuxatemyram.com以常见问题解答的形式很好地解释了这一点,要点如下:
这是怎么回事?
Linux 正在借用未使用的内存进行磁盘缓存。这看起来好像您的内存不足,但实际上并非如此!一切都很好!
它为什么会这样做?
磁盘缓存使系统运行速度更快!除了让新手感到困惑之外,没有任何缺点。它永远不会以任何方式占用应用程序的内存!
如果我想运行更多应用程序该怎么办?
如果您的应用程序需要更多内存,它们只需收回磁盘缓存借用的一块内存即可。磁盘缓存始终可以立即归还给应用程序!您的内存并不短缺!
我如何知道我实际有多少可用内存?
要查看您的应用程序在不进行交换的情况下可以使用多少内存,请运行 free -m 并查看“可用”列:
$ 免费-m 总计已用免费共享 buff/缓存可用 内存:1504 1491 13 0 855 792 交换:2047 6 2041这是您的答案(以兆字节为单位)。
来源:如上所述,优秀的www.linuxatemyram.com-- 请访问以了解更多信息。
答案3
检查当前内存使用情况
watch -n 1 free -m
或者
watch -n 1 cat /proc/meminfo
释放空间
sudo sysctl -w vm.drop_caches=3
笔记:此操作不会使您的系统运行得更快,也不会影响其稳定性和性能,它只会清理 Linux 内核在缓存上使用的内存。
或者
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
笔记:您可以使用 cron 作业来安排上述命令在特定的时间间隔运行。
答案4
正如我们所看到的,兑现不是一个问题,只是如果它导致交换,你可以通过管理vm.swappiness值。也许这就是你要找的: 为什么我有很多可用内存,但还是使用交换空间