我在RHEL环境中运行我的应用服务器(Karaf,Tomcat,Mongo和Zookeeper各一个实例),经常看到(使用free -m)我的总12GB RAM几乎8GM显示为缓存。该应用程序也放慢了速度。为什么会这样呢?我甚至试图优雅地停止所有这些服务,直到我只在我的盒子上运行Linux操作系统。即使这样,缓存也不会被释放。我必须手动释放它才能将其关闭。
为什么缓存会像这样累积,是否与我的应用程序有关?像这样运行chron作业只是为了释放缓存是一个好习惯吗?
答案 0 :(得分:0)
如果你在谈论"缓存"从这里的最后一栏:
$ free -m
total used free shared buffers cached
Mem: 3954 3580 374 0 1 1448
然后没有理由清除它。此缓存绝对无害,它保留(缓存)例如先前打开的文件以便更快地访问。当需要更多内存时,将自动清除此缓存。没有理由说这个缓存会降低任何应用程序的速度。
更新:某些应用程序将临时文件存储在内存中,/ dev / shm通常用于此目的,但您可以使用以下命令检查系统:
$ mount|grep tmpfs
这些文件也显示在缓存列中,但是当需要更多可用内存时,这些数据无法被删除。
答案 1 :(得分:0)
尝试清除缓存。
#sync; echo 3 > /proc/sys/vm/drop_caches