You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统如何获取任务管理器显示的内存缓存数值?

Windows任务管理器内存缓存数值获取方案

参考截图(目标取值位置):
Windows任务管理器性能页内存项的缓存数值展示

  • 首先明确核心问题结论:截图中展示的内存缓存数值,无法直接通过Win32_OperatingSystem WMI类读取。Win32_OperatingSystem类仅提供总物理内存、可用物理内存、总虚拟内存、空闲虚拟内存这类基础内存统计属性,不存在对应系统缓存大小的字段,也无法通过该类的现有字段准确换算出缓存值。
  • 该缓存值和任务管理器的取值逻辑完全对齐的获取方法如下:
    • 方法1:读取系统内置性能计数器(推荐,实现简单、跨Windows版本兼容性好)
      任务管理器本身就是直接读取\Memory\Cached Bytes这个性能计数器的数值作为缓存值展示,该计数器返回值单位为字节,除以1024*1024即可得到以MB为单位的缓存大小,和截图展示数值完全一致。
      快速验证可以直接在PowerShell中运行以下命令:
      # 输出当前系统缓存大小,单位为MB,结果和任务管理器展示一致
      [math]::Round((Get-Counter '\Memory\Cached Bytes').CounterSamples.CookedValue / 1MB, 0)
      
      如果需要通过WMI渠道读取,可以查询性能计数器对应的WMI类Win32_PerfFormattedData_PerfOS_Memory,读取其中的CacheBytes属性即可,对应WQL查询语句为:
      SELECT CacheBytes FROM Win32_PerfFormattedData_PerfOS_Memory
      
    • 方法2:调用原生Windows API获取
      可以调用ntdll.dll导出的NtQuerySystemInformation函数,传入SystemPerformanceInformation信息类,从返回的系统内存信息结构体中,累加待机内存列表、修改页列表的总大小计算得到缓存值。该方法需要自行处理不同Windows版本的结构体偏移、调用权限问题,实现成本较高,无特殊定制需求不推荐使用。

避坑提示:不要尝试用GlobalMemoryStatusEx等通用内存API返回的空闲内存、可用内存值推导缓存大小,这些值和缓存值没有固定换算关系,计算结果误差极大。

内容的提问来源于stack exchange,提问作者HermanChris22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:15:25