Skip to content

[Bug] memoryPressurePercent 与 shortMemoryString 计算口径不一致,混淆 system-wide memory pressure 和进程 RSS #13

@ShadyUnderLight

Description

@ShadyUnderLight

问题描述

SystemMetricsProvider.currentUsedMemory 计算的是 system-wide memory pages:

active + inactive + wired + compressor

这个值代表整台 Mac 当前"被占用的内存",不是单个进程 RSS。

shortMemoryString(menu bar 显示)和 memorySummary(SummaryCard 显示)用的是同一个 summary.memoryUsedBytes,即 system-wide memory pressure 口径。

这两个数字与 Activity Monitor 里显示的"App Memory / Memory Used"完全不是一个概念,用户看到"70% 内存占用"但 Activity Monitor 显示完全不同会感到困惑。

预期结果

UI 显示的内存数值口径清晰,与用户认知一致。

建议方案

  1. 明确区分两种口径:systemMemoryUsedBytes(当前实现)和 appMemoryUsedBytes(通过 host_process_info 获取当前 app RSS sum)
  2. menu bar 展示 system-wide memory pressure 是合理的(用户要的是全局占用感)
  3. SummaryCard 的 RAM 卡可以额外标注 "System-wide" 或 "All apps"
  4. 或者在 Settings 里提供切换显示模式的选项

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions