我运行了一个进程,它几乎用完了我所有的 RAM 和 Swap……我被迫终止了这个进程,但现在我看到了一些奇怪的东西,我的 Swap 使用量减少了一点,但它仍然使用了一半,而我的 RAM 是几乎没有被使用......事实上,使用的交换比 RAM 多得多,即使 RAM 使用率很低,我的电脑真的很慢,我假设这仍然与交换水平有关高吗?如果是这样,如果没有自动清除我的掉期,我该如何清除?或者我该怎么办?我已经看过这个问题,它似乎不仅仅是在谈论 Swap 并且我不想影响 RAM,所以一个解决方案是清除 Swap,但只有 Swap ...
上次发生这种情况时,我被迫重新启动机器,但我应该这样做。我正在使用 GNOME 3.18 运行 Ubuntu GNOME 15.10。
一旦数据进入交换区,即使您的内存开始再次释放,它仍然留在那里是正常的。这是一件好事,无需担心。
由于硬盘访问速度明显慢于内存,当您的系统认为对系统性能或稳定性没有必要时,它会避免将数据交换进或出交换区。因此,只有当系统可用内存不足或磁盘缓存压力很大时,数据才会进入交换区,并且您的系统决定将数据放入交换区的耗时过程将获得更好或更多的回报之后的可靠系统性能。
从交换区传输数据(至少对于传统硬盘而言)与将数据放入交换区一样耗时。因此,如果实际上没有使用数据,您的系统将不愿意从交换中删除数据。如果你有数据在交换区并且没有被使用,那么它仍然在交换区实际上是一件好事,因为它为其他正在使用的东西留下了更多的空闲内存,可能会加速你的系统。
如果可能,完全避免交换的最佳方法是购买更多物理 RAM。当它交换时,您的系统会以其拥有的物理内存量为您提供最佳性能。
综上所述,如果您确定首先导致交换的低内存/高缓存事件不会再次发生并且您不介意等待,则可以强制系统释放其所有交换数据使用以下命令。
sudo swapoff -a
sudo swapon -a
Run Code Online (Sandbox Code Playgroud)
这将禁用然后重新启用交换,在此过程中强制数据退出。正如所解释的,可能没有真正的理由这样做 - 除了好奇或看到您的交换是如何工作的。