当内存交换到磁盘上,并且以后释放RAM时,是否将内存交换回RAM中?


1

我猜答案取决于操作系统。在这种情况下,它是VMware ESXi。我通过将多个VM迁移到内存已过量使用的主机来创建了内存不足的情况。一旦页面共享和热烈启动,就会有足够的RAM而没有任何页面调度,但是,这些过程需要时间。在这段时间内,ESXi将内存交换到磁盘。

因此,我的条件是我将获得大量可用的主机内存,但是大量内存已交换到磁盘上。

什么时候可以将该内存换回RAM?只有一次访问?这也意味着,当访问它时,会有延迟吗?这是可以避免的吗?

Answers:


2

仅在访问它时。所有现代虚拟内存OS都是“按需分页”的,这意味着由于引用了“无效”页而发生的页面错误而导致页面被分页。

(“无效”页面只是被引用时会引发页面错误的页面。它实际上可能位于页面缓存中的RAM中。该名称来自x86 / x64页面表条目中的“有效”位。另一个名称因为它是“常驻的”,但是这个名称有点误导,同样,“无效”的页面实际上可能位于页面缓存中的RAM中。)

这可以通过预取和预读等方式进行一些修改,但是从根本上说,事情仍然是按需分配的。

这样做的原因是,当程序空闲了一段时间(并“交换到磁盘”时),下次执行某次操作时其内存访问模式不一定与以前的相似。简单地将页面仅存储在内存中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.