如何快速从页面文件加载整个程序?

如何快速从页面文件加载整个程序?

有时我几天不使用某些内存使用率较高的程序(例如具有 2 GB 内存的虚拟机)。当我返回时,它的内存大部分都交换到了 HDD 上。当我稍后尝试使用该程序时,它加载速度非常慢。例如,它的物理内存使用率从 600 MB 上升到 1100 MB,速度为 250 KB/s,之后它才变得相当灵敏。因此,速度变慢是因为数据是非连续读取的。

是否可以通过一次连续的硬盘读取来加载程序的内存?因为这只需要半分钟的时间。

这是一台工作机器,操作系统 Windows 7 x64,RAM 大小为 8 GB。

答案1

您应该使页面文件具有静态大小,这样它就不会碎片化并简化硬盘读取。

下面显示了静态大小页面文件的一个示例。

在此处输入图片描述

答案2

您无法直接更改内存与磁盘的交换方式,因为它交换的是页面而不是程序。您可以通过以下方式加快速度:

  1. 按照 UNIX 方式操作。在磁盘开头创建一个小分区来保存交换文件。
  2. 限制交换文件的大小变化。
  3. 安装一个好的碎片整理应用程序。

没有人可以干扰交换。要干扰交换,您需要拥有最大权限,因为交换可能包含任何重要数据,如密钥或密码。即使您有权访问交换,您也可以自己读取它,但这不会给您带来任何提升,因为交换不受缓存的影响,因此读取任何页面只会加载您的驱动器而不会加快任何速度。

还有其他解决方案,例如避免使用 swap进程/应用程序检查点。Linux 和 BSD 可以做到这一点。有些系统可以像 DragonflyBSD 一样自然地做到这一点,因为它们具有内存管理和运行时对象链接可能性。但是我怀疑在 Windows 上这样做的可能性,您可以寻找类似(跳过有关信号的垃圾,它们对检查站没有任何作用)。

相关内容