当我使用大量 RAM(90-100%)时,笔记本电脑通常会开始使用 SWAP,因此如果我htop
在这种高强度使用期间查看,我会发现它使用了 200MB 的 SWAP。但是当我停止使用笔记本电脑时(计算机处于空闲和运行状态),SWAP 仍在使用,它不会像 RAM 那样被清除。
这是为什么?
- 系统:Ubuntu 11.04 64 位
- 笔记本电脑:Asus 1201n 2GiB RAM、2GiB SWAP、1.6 ghz 双核 CPU。
答案1
交换空间不会将换出的页面移回物理 RAM,直到使用该内存的进程再次访问它为止。因此,特别是如果您让计算机处于空闲状态,您很可能永远不会看到所有交换空间都被清空。有两种方法可以清除交换空间:
- 禁用交换。在此过程中,页面将被刷新回 RAM。然后您可以重新启用它。
- 强制每个空闲进程积极利用被换出的内容。
第二个问题几乎不可能,而第一个问题则没有必要。因此,由于交换出的内容甚至不会尝试使用存储在该内存中的内容,因此我不必担心会有一些交换使用 - 这是完全正常的,并且不会影响您的性能,因为交换不会被主动“使用”。
答案2
Linux 会尽可能高效地使用您的 RAM。如果不需要,就没有必要从交换中取回它们(尽管当它们需要时,您将不得不等待一段时间)。将 RAM 用于一些有用的事情(例如缓存您在硬盘上使用的文件)会更有效率。
答案3
交换空间无需清除,直到再次需要该空间为止。届时将根据预定标准(例如上次使用时间和分配的优先级)放弃交换空间以满足新的交换要求。