Windows 如何使程序使用虚拟内存?

Windows 如何使程序使用虚拟内存?,windows,perl,virtual-memory,Windows,Perl,Virtual Memory,如何使程序在Windows中使用虚拟内存 我有一个长的perl脚本,它使用了6GB+的内存,并且不断增加。我的机器只有8GB或RAM。这可能是由模块内存泄漏引起的,但我现在对此无能为力 是否可以使用虚拟内存,或者这是仅由Windows控制的?如果需要,并且配置为具有交换空间,操作系统将自动提供虚拟内存。您无法通过Perl程序控制它 如果您的Perl程序最终出现内存泄漏,它将开始交换到页面文件。当它的内存消耗导致总内存超过物理RAM加上页面文件的总和时,事情会变得缓慢,进程可能会变得无响应和/或崩

如何使程序在
Windows
中使用虚拟内存

我有一个长的
perl
脚本,它使用了6GB+的内存,并且不断增加。我的机器只有8GB或RAM。这可能是由模块内存泄漏引起的,但我现在对此无能为力


是否可以使用虚拟内存,或者这是仅由Windows控制的?

如果需要,并且配置为具有交换空间,操作系统将自动提供虚拟内存。您无法通过Perl程序控制它

如果您的Perl程序最终出现内存泄漏,它将开始交换到页面文件。当它的内存消耗导致总内存超过物理RAM加上页面文件的总和时,事情会变得缓慢,进程可能会变得无响应和/或崩溃

在任何情况下,页面文件的大小都不能动态更改,需要重新启动。唯一的长期解决办法是找到并修复泄漏

  • 创建要在虚拟ram中运行的程序的快捷方式
  • 在快捷方式上单击鼠标右键,然后单击“属性”
  • 在属性中,找到目标的位置
  • 复制并在目标(--profile directory=“profile 1”--disk cache dir=C:\)的末尾执行此操作
  • 重新启动你的电脑

  • 我让程序运行,它非常接近我机器的物理内存限制。我希望它能更早地切换到页面文件,这样就不会影响系统其余部分的性能。顺便说一下,内存泄漏可能在导入的模块中。我需要很长时间才能找到它。Windows将在需要时进行交换。一旦提交的内存总量超过物理RAM,性能就会下降,特别是在其他进程中有很多事情发生的情况下。这是不可避免的。@CJ7,它不会为了接近RAM的极限而减慢任何速度。如果它需要更多,那么它会将Perl RAM中未使用的块放入VM中,因为泄漏的块是未使用的,所以您应该不会看到什么减速。@oldtechaa是的,它确实会在RAM限制附近减速。我注意到当可用内存不足1GB时,性能会下降。这可能是因为它开始使用虚拟内存。即使有可能,让它更快地使用虚拟内存也可能会更快地降低性能。请记住,32位程序仅限于使用2或3 GB,无论您有多少内存。您可能需要一个64位的Perl版本(
    Perl-V:archname
    的输出中的
    x64
    ),才能使用虚拟内存。它将在需要内存时自动发生。@ikegami这绝对是64位
    perl
    。目前,它在8GB的已用RAM中占7.17GB。在这之前我认为它应该换成虚拟内存。显然,物理内存比虚拟内存更适合任何事情。不会降低磁盘IO或使用它的进程的速度;这是双赢的。当操作系统可以使用物理内存并根据需要移动时,为什么要使用虚拟内存?