交换作为 RAM 墓地没有意义(因为 RAM 快一百万倍)

-9 ram

除非你的内存非常低,否则交换根本没有意义。

  • 光盘比 RAM 慢 1000000 倍
  • 交换使一切变得慢得多

除非在没有 RAM 的最后一刻,否则根本不应该激活它。为什么?因为 RAM 快了一百万倍。

Ste*_*ris 5

交换不会让一切变得更慢;事实上它可以让事情变得更快。

看,有些应用程序将页面加载到内存中但从未使用过;它们存在于应用程序的构建方式中,包括库和各种复杂性、内存分配等,但可执行路径从不使用它。

那么为什么不扔掉这些内存页进行交换并释放它们以供其他用途呢?现在我们有更多的 RAM 可用于需要它的东西了吗?即使使用的是磁盘 I/O 缓存,通过将未使用的内容推送到交换区,我们可以更好地利用 RAM。

现在我们知道没有“一刀切”的解决方案,这就是为什么现代系统允许调整;我们可以从“仅在 RAM 不足时使用交换”转变为“机会主义地将东西放入交换”。不同的用例可能受益于不同的调整参数。甚至在某些用例中,零交换是最佳解决方案。

如果您希望仅在 RAM 用完时才使用交换区,那么 Linux 的“swappiness”设置可以帮助您。

  • @ArtemS.Tashkinov 你已经敲这鼓好几年了。你对交换的看法是完全错误的——正如我和其他人之前向你指出的那样。你显然不愿意学习或纠正你的错误,所以我不想浪费时间一遍又一遍地重复你的错误。 (3认同)
  • 内核不会交换_applications_。这种情况在 90 年代就消失了。旧式交换(例如 SunOS 4)不是现代系统所做的。现在我们交换_pages_。内核确实非常清楚使用了哪些内存页面。因此,它可以丢弃正在运行的应用程序中的页面,而不影响该应用程序,因为该应用程序不使用这些页面。 (2认同)
  • @ArtemS.Tashkinov 没有任何交换意味着您在从未使用过的代码/数据页上浪费了 RAM,而最好将这些垃圾换出并将该 RAM 用于有用的东西(实际正在使用的代码/数据和磁盘)缓存)。拥有可用的交换空间**永远不会**有害 - 内核不会无缘无故地随机交换东西,当其他东西需要内存时它会交换未使用/不经常使用的东西 - 所以要么你有足够的 RAM 并且没有太多东西交换,或者您收到一个无可辩驳的信号,表明您的系统需要更多 RAM。 (2认同)
  • 如今,交换并不是 RAM 的长期替代品 - 它是为了避免短期**临时**情况下的内存不足情况(这可能导致应用程序甚至内核崩溃),因此机器和应用程序可以继续运行(性能降低)直到临时情况结束,而不是被杀死。简而言之:交换不是问题。交换抖动是一个问题,它表明您需要更多 RAM。 (2认同)