当删除页面缓存时,谁来释放它?

当删除页面缓存时,谁来释放它?

当我跑步时

echo 1 > /proc/sys/vm/drop_caches

而且Cached内存块被清空了,我怎么知道是谁释放了那块内存呢?或者它是否从不再运行的进程中释放内存?

答案1

echo 1 > /proc/sys/vm/drop_caches释放页面缓存。这是包含磁盘块内容的内核内存。该内存属于内核。

将其描述为“释放”内存有点误导。内存最初并不是被保存的:它是一个缓存。如果需要内存用于更重要的目的,则将从内存中删除缓存页。这之所以成为可能,正是因为它们没有被持有——没有人需要它们。

内容缓存条目可以属于任意数量的进程。内存页通常不属于单个进程。例如,如果页面包含文件中的缓存页面,则可以说它属于打开该文件的任何进程。但也可以说它属于整个系统,因为即使当前没有进程打开该文件,缓存条目也是有用的。

请注意,删除缓存几乎只对一件事有用:使用原始缓存进行 I/O 基准测试。磁盘缓存对性能至关重要,删除它们会严重影响性能(顺便说一下,R​​AM 中没有为缓存留下足够的空间)。

相关内容