有没有办法限制一个进程在Win7 x64中使用的内存?

我认为Linux可以使用ulimit来做到这一点,我正在寻找类似于Win7 x64的东西。 问题是有些进程并不知道物理内存已经耗尽,并继续分配内存,由于系统是从页面文件分配的,这会使系统变慢。 唯一的方法来恢复是硬重启。

谢谢

有Windows系统资源pipe理器 ,但这只适用于Windows Server 2008。

一般来说,这不是一个好主意 – 页面文件是为了使用。 大多数进程不知道物理内存的限制,也不需要关心。 这听起来像你应该使用资源清理程序,或者投资更多的内存 – 现在4GB是非常标准的,而且越多越好。

  • 在Win7上,打开msconfig ,然后selectBoot panel => Advanced options =>选中Maximum memory并在checkbox下面的文本框中设置限制=> Restart。 这限制了总内存使用量。

  • 另一种方法可能是在后台运行批处理脚本,监视进程的内存使用情况,如果内存消耗太多,则将其杀死。

我有一个不需要的过程(它下载大量的广告),消耗太多的内存(总是由我经常使用的另一个程序启动)。 这是我监视的bat脚本,并自动closures它。

 @echo off set prog="XXXX.exe" :1 SET found=1 (tasklist /FI "username eq <your username>" | find %prog% || set found=0) >nul 2>nul if %found% EQU 1 (taskkill /f /im %prog%) ping 0.0.0.1 -n 600 >nul 2>nul goto 1 

有人可以扩展它来监视任何进程。

  • 如果您编写了自己的程序,则可以使用Job对象API

    作业可以对与作业关联的每个进程实施限制,如工作集大小,进程优先级和作业结束时间限制。 如果与作业相关的进程试图将其工作集大小或进程优先级从作业所build立的限制中提高,则该函数调用将成功,但会被忽略。 作业还可以设置限制,当超出时触发通知,但允许作业继续运行。