通过批处理增加虚拟内存大小

Increase virtual memory size with batch

我刚才遇到了以下线程:[post 关于虚拟 space][1]。

start /wait /b powershell -command "Set-ItemProperty -Path 'registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management' -Name 'PagingFiles' -Value 'c:\pagefile.sys 1024 1024, d:\pagefile.sys 4096 4096'"

我想知道是否可以添加自动检测当前安装的 RAM 大小并将其乘以 3。

据我所知,建议的虚拟 space 最大大小是当前 RAM 的 3 倍,因此是否可以创建一个只需单击一下即可完成的批处理?

我假设您必须通过 cmd 设置变量并将其包含在上面列出的代码中,例如:

start /wait /b powershell -command "Set-ItemProperty -Path 'registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management' -Name 'PagingFiles' -Value 'c:\pagefile.sys **AUTODETECTCURRENTRAM** **AUTODETECTCURRENTRAM*3**, d:\pagefile.sys 4096 4096'"

我很想听听您对此的看法,您认为如何才能实现这一目标?它对提高计算机性能有多大用处?

可以使用 systeminfo 获取总 ram,尽管它不是一个静默或快速的过程

@Echo off
for /f "tokens=2* delims=:" %%a in ('systeminfo ^| findstr /I /C:"Total Physical Memory"') do Set "TotalRAM=%%a"
Set "TotalRAM=%TotalRAM: =%"
Set "TotalRAM=%TotalRAM:,=%"
Set "TotalRAM=%TotalRAM:MB=%"

至于你的预期目的是否有任何好处,我不知道。

查找当前最大虚拟内存:

for /f "tokens=3* delims=:" %%a in ('systeminfo ^| findstr /I /C:"Virtual Memory: Max Size:"') do Set "maxVRAM=%%a"
Set "maxVRAM=%maxVRAM: =%"
Set "maxVRAM=%maxVRAM:,=%"
Set "maxVRAM=%maxVRAM:MB=%"

我假设您正在寻找一个包含如下内容的批处理文件:

@PowerShell -NoProfile -Command ^
 "$TotalRAM = (GWMI Win32_PhysicalMemory|Measure Capacity -Sum).Sum/1MB;" ^
 "$VirtualM = $TotalRAM * 3;" ^
 "Set-ItemProperty -Path \"Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\" -Name \"PagingFiles\" -Type \"MultiString\" -Value \"C:\pagefile.sys $TotalRAM $VirtualM`r`nD:\pagefile.sys 4096 4096\" -Force"

这应该创建一个 REG_MULTI_SZ 条目,第一个条目列在 C: 的根目录,其初始大小与您的总物理 RAM 相匹配,其最大值是初始设置的三倍。第二个列在 D: 的根上,初始大小和最大大小均为 4096 MB。

请注意,这个答案不是建议,我认为没有任何必要假设 Microsoft 比我更了解如何管理此类事情。