如何在 Linux 系统上清除 RAM 缓存、缓冲区和交换空间

通常,在运行期间,Linux 系统会使用物理内存中未使用的部分来临时存储数据。 缓存和缓冲区是指系统用来提高程序或应用程序性能的程序的时间数据。 如果您担心您的物理内存被程序用于缓存并且您想清除它们。 您可以在 Linux 中这样做,我们将在本文中讨论这一点。 在Linux系统中,它提供了三种清除缓存的选项,我们来看看。

用于清除缓存页面

# sync; echo 1 > /proc/sys/vm/drop_caches

用于清除 dentries 和 inode

# sync; echo 2 > /proc/sys/vm/drop_caches

用于清除 PageCache、dentries 和 inode

# sync; echo 3 > /proc/sys/vm/drop_caches

在上述命令中,sync 命令将所有缓存数据刷新并写入磁盘。 同步后的分号 (;) 将两个命令分开并保持第二个命令单元第一个完全执行。 页面缓存是系统读取文件后保存的缓存数据。

同样,dentry 和 inode_cache 是读取文件属性/目录后存储在内存中的缓存数据。 根据 Linux 内核写入 drop_caches 将清除缓存而不影响正在运行的程序。

在上面的示例中,您可以看到缓存中的数据从 249 Mb 减少到 138 Mb。

注意:内存缓存与交换空间无关,因此增加交换空间无济于事。 它不会使用交换空间来存储缓存数据。

清除交换内存

基本上,只要 RAM 内存不足,就交换用作辅助物理内存的磁盘空间,以提高系统性能。 交换上的数据也是临时的,因此要清除系统中的交换空间,请运行以下命令。

# swapoff -a && swapon -a

swapoff 命令将禁用交换,而 swapon 将启用交换。 如果您愿意,您可以在不使用运算符的情况下分别执行这两个命令。