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

为何ComputerInfo.TotalPhysicalMemory显示17GB而非实际16GB?

内存计算数值差异的原因
  • 单位定义差异是核心原因:
    厂商标注的16GB是十进制GB(1GB = 10^9 字节),而计算机硬件的实际内存容量按二进制GiB计算(1GiB = 2^30 字节 ≈ 1.0737 十进制GB)。你的16GiB物理内存,实际字节数为 16 * 2^30 = 17179869184 字节,用十进制GB换算(除以10^9)后约为17.18GB,取整后就会显示17。

  • ComputerInfo.TotalPhysicalMemory的返回逻辑:
    这个API返回的是系统可识别的真实物理内存总字节数(基于二进制计算的容量),所以用十进制GB转换时,必然和厂商标注值产生差异。

  • 获取和厂商一致数值的方法:
    如果要显示和厂商标注匹配的结果,需用二进制单位换算,代码示例:

    var computerInfo = new Microsoft.VisualBasic.Devices.ComputerInfo();
    long totalBytes = computerInfo.TotalPhysicalMemory;
    // 按二进制GiB换算(等价于除以1024^3)
    double totalGB = totalBytes / Math.Pow(2, 30);
    // 保留1位小数,输出类似16.0 GB
    Console.WriteLine($"总物理内存:{totalGB:F1} GB");
    
  • 硬件预留的次要影响:
    部分物理内存会被主板、集成显卡等硬件预留使用,系统无法直接调用,但这部分占用通常仅几百MB级别,不会导致1GB级别的差异,因此你的情况核心还是单位换算问题。

内容的提问来源于stack exchange,提问作者Mario Mateaș

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:05:21