什么是交换内存?

46 swap

我使用 RAM 来存储我的一些数据库表,而其他的则存储在硬盘中。

今天我知道我的进程正在使用交换内存。现在什么是交换内存以及如何检测哪个进程正在使用交换内存以及如何阻止它们使用它?

小智 64

如果物理内存用完,则使用虚拟内存,它将数据存储在磁盘上的内存中。从磁盘读取比从内存读取慢几个数量级,所以这会减慢一切。(在实内存和虚拟内存之间交换数据是“交换”。磁盘上的空间是“交换空间”。)

如果您的应用程序“使用交换”,那么您需要使用更少的内存或购买更多的 RAM。

(交换很有用,因为未使用的应用程序可以存储在磁盘上,直到它们被使用。然后它们可以“调入”并再次正常运行。虽然它不在内存中,但操作系统可以使用该内存用于其他东西,如磁盘缓存。所以这是一个非常有用的功能,但如果你没有足够的物理内存来运行你的程序,你肯定需要更多的内存。幸运的是,现在内存真的很便宜。)

  • 为了正确起见:虚拟内存意味着使用虚拟内存地址(现代 CPU 中总是启用的东西,无论您有多少可用 RAM)并且与交换没有直接关系(尽管它们组合使用,但它们是本质上是不同的概念)。 (3认同)

小智 8

计算机有一定数量的物理内存。但大多数时候我们想要更多。所以我们在磁盘上交换一些内存。

每次我们需要该内存时,都需要将其交换回内存(交换其他部分)。有非常智能的算法可以最大限度地减少延迟,但有时我们仍然需要等待。

在 Windows 上,如果您查看任务管理器,可以显示列页面错误。这显示了应用程序请求磁盘上需要交换的一块内存的时间数。大量页面错误 = 应用程序缓慢。

此过程用于多个级别。从快到慢的总结:

  • 在 CPU 级别,有寄存器。这些是最快的内存,但数量有限。
  • 在 CPU 上还有一个小的内存缓存。这里存储了一小部分正在运行的程序,以便快速访问。如果您想了解更多信息,请搜索分支预测算法。
  • 有时在 CPU 和主存之间有 2 级缓存。
  • 下一级是主存储器 (RAM)。
  • 最后一级也是最慢的是磁盘,有时您可以使用 U 盘作为额外的内存。