使用echo 3> / proc / sys / vm / drop_caches释放页面缓存不起作用?

free -m total used free shared buffers cached Mem: 24055 22439 1615 8969 16 9096 -/+ buffers/cache: 13326 10728 Swap: 0 0 0 

所以我最初在这里,我想要一点额外的ram空间,所以我的spotify停止崩溃,所以我可以启动另一个java服务器或其他什么。

我尝试echo 3 > /proc/sys/vm/drop_caches但没有骰子。 事后读数是一样的。 即使在关闭了chrome和所有内存密集型内容之后,页面缓存仍然保持不变,直到重新启动。

是什么导致这个?

我一直都这样做:

 echo 3 | sudo tee /proc/sys/vm/drop_caches 

sudo提示符开始,这里有一个你可以使用的单行程:

 # free -m && sync && echo 3 > /proc/sys/vm/drop_caches && free -m total used free shared buff/cache available Mem: 7840 1958 2775 739 3106 4795 Swap: 7999 0 7999 total used free shared buff/cache available Mem: 7840 1958 4698 734 1183 4860 Swap: 7999 0 7999 

这释放了2 GiB的缓冲区/缓存。 它从3.1 GB变为1.2 GB。

因此它可以正常工作,但是在您的情况下,您没有可以刷新的RAM中的缓冲存储。

Linux(内核)利用未使用的内存用于页面缓存(和缓冲区缓存 – 它仍然存在)以提高性能。

free – >不用于任何东西

echo 3 > /proc/sys/vm/drop_caches释放echo 3 > /proc/sys/vm/drop_caches ,dentries和inode,它们将页面缓存/缓冲区缓存返回到“free”。

Ubuntu 14.04

 # free -m total used free shared buffers cached Mem: 1375 1289 85 5 112 302 -/+ buffers/cache: 875 500 Swap: 0 0 0 # vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 87660 115120 309500 0 0 1 9 4 18 0 0 100 0 0 # echo 3 > /proc/sys/vm/drop_caches # vmstat fprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 512720 2236 25756 0 0 1 9 4 18 0 0 100 0 0 # free -m total used free shared buffers cached Mem: 1375 874 500 5 2 25 -/+ buffers/cache: 847 528 Swap: 0 0 0 

bufferscached将会丢失并且free将增加,但这并不意味着您有更多可用于应用程序的内存。

在您的情况下,查看10728MB的+ buffers/cache ,这是应用程序的当前可用内存。

有关更多信息,请检查Linux是否占用了我的RAM!

BTW:Fedora和Arch Linux free使用procps-ng输出是不同的。

输出结合了buff / cache并删除了有些令人困惑的-/+ buffers/cache

我们可以清楚地看到buff/cache已经丢失但是available没有改变。 我个人认为这是一个更好的实施/解释。

 # free -m total used free shared buff/cache available Mem: 1874 117 18 1 1737 1708 Swap: 0 0 0 # echo 3 > /proc/sys/vm/drop_caches # free -m total used free shared buff/cache available Mem: 1874 117 1654 1 102 1708 Swap: 0 

考虑添加一些交换空间。 当您的系统开始耗尽内存时,OOM(Out Of Memory)杀手将开始查杀应用程序以释放资源。 很多时候它会杀死你需要运行的应用程序。

 dd if=/dev/zero of=/mnt/swapfile bs=1024 count=1048576 

将在/ mnt目录中为您提供1GB的交换文件。 然后将其转换为实际的交换空间:

 mkswap /mnt/swapfile 

然后打开它:

 swapon /mnt/swapfile 

您还希望通过重新启动使其保持不变,因此请编辑/ etc / fstab文件以包含:

 /mnt/swapfile none swap sw 0 0