在我的linux系统上我发现可用内存不断减少。我用来free -m
获取可用内存大小。
但在我执行之后
echo 3 > /proc/sys/vm/drop_caches
可用内存大小恢复为正常值。
我知道这个命令用于释放页面缓存、dentry 和 inode。
但是有没有办法知道哪个应用程序缓存了数据以及我释放了哪些数据?
答案1
最简洁的答案是不。
稍微长一点的答案是,写入 /proc/sys/vm/drop_caches 时释放的缓存实际上与应用程序没有关联。它们是由内核和各种内核子系统(通常是 vm、block 和 fs 子系统)创建的,而这些子系统没有真正的应用程序概念。
好消息是,在正常使用情况下您根本不必担心它们,因为内核会在每种情况下尝试尽可能多地缓存,除非明确告知它不要这样做,然后在需要内存用于其他操作时立即删除缓存。