内存管理优化

超级预读

  • sysmain服务或Superfetch服务(Prefetch预读文件夹)
  • 查看状态 C:\windows\system32>sc query SysMain
    • SERVICE_NAME: SysMain
             TYPE               : 30  WIN32
             STATE              : 1  STOPPED
             WIN32_EXIT_CODE    : 0  (0x0)
             SERVICE_EXIT_CODE  : 0  (0x0)
             CHECKPOINT         : 0x0
             WAIT_HINT          : 0x0
  • 暂停 sc stop SysMain 
  • 禁用 sc config SysMain start=disabled
    • 禁用它后,一顿内存压缩功能都停用了,不需要额外单项设置

内存压缩设置

  • 查看当前设置 Get-MMAgent
    • Get-MMAgent 是 Windows PowerShell 中用于查询 内存管理代理(Memory Management Agent) 配置的命令,主要与系统的预取(Prefetch)、内存压缩、页面合并等优化功能相关。以下是你提供的输出
    • (anaconda3)PS C:\windows\system32> Get-MMAgent
      ApplicationLaunchPrefetching : True  应用程序启动预取 
      ApplicationPreLaunch         : True  应用程序预启动
      MaxOperationAPIFiles         : 256   跟踪最大文件数
      MemoryCompression            : True  内存压缩
      OperationAPI                 : True  预读API
      PageCombining                : False 页面合并
      PSComputerName               :
  • 功能解释(grok)
    • 关闭虚拟内存页面文件
      虚拟内存页面文件(pagefile.sys)是Windows用来扩展物理内存的一种机制。当物理内存不足时,系统会将不常用的内存页交换到硬盘上的页面文件中。如果你关闭并删除了页面文件,系统将无法使用这种交换机制。这意味着在物理内存不足时,系统可能会出现内存不足的错误,尤其是在运行大型应用程序或多任务处理时。
    • 关闭内存压缩(Disable-MMAgent -MemoryCompression)
      内存压缩是Windows 10中的一项功能,它在将数据交换到页面文件之前,先压缩内存中的数据,以减少对页面文件的使用。关闭内存压缩后,系统会直接将数据交换到页面文件(如果页面文件存在)。但由于你已经关闭了页面文件,这项设置会进一步限制系统处理内存不足的能力。
    • 关闭页面合并(Disable-MMAgent -PageCombining)
      页面合并是Windows内存管理器的一项功能,它通过合并相似的内存页来节省内存。关闭此功能后,系统不会尝试优化内存使用,可能会导致内存使用效率降低。
    • 设置跟踪文件数为4096(Set-MMAgent -MaxOperationAPIFiles 4096)
      这个命令将内存管理器跟踪的最大操作API文件数从默认的256增加到4096。这通常与系统监控或调试相关,允许系统跟踪更多的文件操作。增加这个值可能会对性能有轻微影响,但具体影响取决于你的系统配置和使用场景。
    • 关闭启动预读(Disable-MMAgent -ApplicationLaunchPrefetching)
      启动预读是Windows用来加速应用程序启动的功能,它会预先加载应用程序所需的资源。关闭此功能可能会导致应用程序启动速度变慢。
    • 关闭预启动(Disable-MMAgent -ApplicationPreLaunch)
      预启动是Windows 10中的一项优化功能,它可以预先启动某些常用应用程序以加快加载速度。关闭此功能可能会使这些应用程序的启动速度变慢。
  • 管理功能设置
    • 关闭内存压缩 Disable-MMAgent -MemoryCompression
    • 关闭页面合并 Disable-MMAgent -PageCombining
    • 关闭启动预读 Disable-MMAgent -ApplicationLaunchPrefetching
    • 开启启动预读 Enable-MMAgent -ApplicationLaunchPrefetching
    • 设置跟踪最大文件数 Set-MMAgent -MaxOperationAPIFiles 256

虚拟内存设置

  • 目标:减少cpu冗余操作,内存足够大,不需要节省内存而浪费cpu资源
  • 查看当前设置 
    • wmic pagefile list /format:list
    • wmic computersystem get AutomaticManagedPagefile
    • (anaconda3)PS C:\windows\system32> wmic pagefile list /format:list
      AllocatedBaseSize=32768
      CurrentUsage=0
      Description=C:\pagefile.sys
      InstallDate=20250312153835.037552+480
      Name=C:\pagefile.sys
      PeakUsage=0
      Status=
      TempPageFile=FALSE
      (anaconda3)PS C:\windows\system32> wmic computersystem get AutomaticManagedPagefile
      AutomaticManagedPagefile
      FALSE
  • 设为自动管理
    • wmic computersystem where name="%computername%" set AutomaticManagedPagefile=True
  • 设为c盘16GB
    • wmic computersystem where name="%computername%" set AutomaticManagedPagefile=False
    • wmic pagefileset where name="C:\\pagefile.sys" set InitialSize=16384,MaximumSize=16384
    • 重启生效
  • 关闭页面文件
    • wmic computersystem where "name='%computername%'" set AutomaticManagedPagefile=False
    • wmic pagefileset where "name='C:\\pagefile.sys'" delete

优化建议收集

  • TK TK
    笔记本电脑,CPU是垃圾1335u,但内存可以加到64gb,所以节省内存容量而消耗CPU资源的优化选项可以一律关掉,例如内存压缩,页合并。2024-12-16
  • VectorLink
    假如你使用了微信或者qq这种在系统文档拉屎的软件,sysmain的处理器占用能瞬间提升2024-04-05
  • erich
    确实有助于减少内存占用,关了之后占用反而变高了,再开启16g内存占用从25%降到21%
    2024-12-05
  • assassin
    https://www.bilibili.com/video/BV1CG4y1173x/ 
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management
    ApplicationLaunchPrefetching 程序预加载进内存(内存大就开)
    ApplicationPreLaunch 程序预运行(CPU速度快就开)(我关了)
    MaxOperationAPIFiles 最大程序预加载进内存的文件数,只需要运行set-mmagent之后输入数字即可(内存越大开得越多,默认256)(这个就是在C:\Windows\Prefetch里面的文件数量,最多8192个)
    MemoryCompression 内存压缩(CPU速度快就开)(我关了)
    OperationAPI 可以让内存预读取非系统的任何程序(内存大就开)
    PageCombining 让系统合并具有相同内容的内存,可以节省内存(CPU速度快就开)(我关了)
    2023-9-1
  • Bed1vere
    我直接禁用sysmain。这人说的很多都是过时的设置,特别是硬盘那一期
    2023-9-1

关闭预读压缩合并

  • 设置
    • 关闭虚拟内存 wmic computersystem where "name='%computername%'" set AutomaticManagedPagefile=False;wmic pagefileset where "name='C:\\pagefile.sys'" delete 减少磁盘I/O和CPU开销
    • 关闭超级预取 sc stop SysMain;sc config SysMain start=disabled 减少磁盘I/O和CPU开销(禁用后,下面一堆全都自动被关闭)
      • 关闭内存压缩 Disable-MMAgent -MemoryCompression 减少cpu开销,增加内存占用
      • 关闭页面合并 Disable-MMAgent -PageCombining  减少cpu开销,增加内存占用 
      • 关闭启动预读 Disable-MMAgent -ApplicationLaunchPrefetching 减少磁盘I/O和CPU开销,增加程序启动耗时
      • 关闭预启动 Disable-MMAgent -ApplicationPreLaunch 减少cpu开销,增加程序启动耗时
      • 跟踪文件数4096 Set-MMAgent -MaxOperationAPIFiles 4096 因为sysmain服务关闭后,操作api也被关闭了,所以设置最大跟踪文件数已经没有意义了
  • 日常使用跟踪