![我的缓存已满,但从未关闭](https://linux22.com/image/851267/%E6%88%91%E7%9A%84%E7%BC%93%E5%AD%98%E5%B7%B2%E6%BB%A1%EF%BC%8C%E4%BD%86%E4%BB%8E%E6%9C%AA%E5%85%B3%E9%97%AD.png)
我知道 Ubuntu 会自主管理内存,它会将缓存存储在 RAM 上以便快速访问程序,但每次我填满缓存时,它都会一直被填满,而且 Ubuntu 自身无法删除缓存,如果我打开一个程序,计算机就会变得非常慢。我有 16GB RAM,我可以使用“sync && echo 3 | sudo tee /proc/sys/vm/drop_caches”来清除缓存,但只能在缓存填满之前,否则我将无法打开终端。从 12.04 到 13.10 都发生过这种情况,使用同一台笔记本电脑的 12.04 之前的笔记本电脑没有发生过这种情况。Linux 如何管理缓存内存,它如何知道何时删除?我不知道如何解决这个问题。
答案1
在正常操作期间无需手动管理、监控或清除 Linux 缓存,而且这样做不会带来任何性能上的好处。
缓存的目的是存储最近从磁盘访问的数据,以便后续读取数据的尝试可以更快地完成。这就是为什么第二次加载大型文档通常要快得多的原因。但是,Linux 仍将内存视为“空闲”的,如果需要更多内存(例如,加载新程序或文档),可以立即重新使用,因此清除缓存不会有任何作用。drop_caches 控件用于帮助开发人员进行基准测试和测试,而不是为普通用户提供。
如果没有更多信息,就无法确定是什么原因导致程序加载缓慢,但几乎可以肯定与缓存无关。磁盘性能不佳或存在其他磁盘或 CPU 密集型进程可能是罪魁祸首。