Skip to content
chungxonPublic

About

A lightweight macOS menu bar app focused on memory monitoring for multiple users

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

96 Commits

Folders and files

Repository files navigation

MemStats

A lightweight macOS menu bar app focused on memory monitoring for multiple users: top users donut, top apps, top processes, memory pressure, swap and a short bounded history, all in one popover.

Demo

MemStats menu bar app showing memory usage, history and top users

Requirements

  • macOS 14.0 (Sonoma) or later
  • Apple Silicon or Intel Mac

Install

  1. Download MemStats-<version>.zip from GitHub Releases.
  2. Unzip it and drag MemStats.app into /Applications.
  3. Open it once as described in First launch.

MemStats is distributed outside the Mac App Store, because it needs the App Sandbox turned off to run top and read processes of other users.

First Launch

MemStats is signed ad hoc and not notarized yet, so macOS blocks it the first time you open it. Use one of these:

  • Open the app once, then go to System Settings > Privacy & Security and click "Open Anyway" next to the MemStats message.

  • Or remove the quarantine flag in Terminal:

    xattr -dr com.apple.quarantine /Applications/MemStats.app

After that, MemStats opens normally. It lives in the menu bar only (no Dock icon). Right-click (or Option-click) the menu bar item for Open at Login, Show System Users, Settings, About and Quit. The gear in the popover opens the same options menu next to the gear without closing the popover.

Settings

Settings (⌘, in the menu bar item's menu) lets you change:

  • Update interval for RAM, pressure, swap, the menu bar and history (1 to 60s, default 5s)
  • Update interval for top processes (3 to 60s, default 5s)
  • Number of top apps and top processes shown (5 to 20, default 8)
  • Open at Login and Show System Users

Short intervals use more CPU, mostly the top processes interval, since each update runs top (about 1.4s of work). While the popover is closed, RAM updates at most every 15s and top processes at most every 60s.

Update

There is no automatic update. Open Settings and click "Check for Updates…" to open the latest release on GitHub Releases, compare it with the version shown in Settings, then download and replace the app.

Report a Bug

Open Settings and click "Report a Bug…". It opens a new GitHub issue with your MemStats version, macOS version and Mac model already filled in, so you only describe the problem. You can also open an issue directly.

Build From Source

Requires Xcode 26 or later.

git clone https://github.com/chungxon/mem-stats.git
cd mem-stats
xcodebuild -project MemStats/MemStats.xcodeproj -scheme MemStats -configuration Release -derivedDataPath build build
open build/Build/Products/Release/MemStats.app

Run the unit tests:

xcodebuild -project MemStats/MemStats.xcodeproj -scheme MemStats -destination 'platform=macOS' test

Resource Usage

Snapshot from Activity Monitor (Debug build, running under Xcode debugserver, on 2026-10-03):

Metric Value Assessment
Real Memory 45.1 MB Normal. A minimal SwiftUI + AppKit app usually sits at 30 to 60 MB. This is all resident pages, so it also includes clean file-backed pages (framework code, fonts, assets) and graphics memory, which is why it is larger than Private + Shared
Private Memory 4.9 MB Very low. This is the memory the app allocates itself and the most meaningful number
Shared Memory 12.8 MB Normal. Frameworks shared with other processes
Virtual Memory 415.44 GB Not a concern. Reserved address space (shared cache, GPU, malloc zones), not physical RAM. Typical for any app on Apple Silicon
% CPU 0.20 Good for an app that samples periodically
Recent hangs 0 Good

Notes:

  • A Release build is expected to be slightly lighter, since there is no debugger attached and optimizations are enabled.
  • One snapshot is not enough to rule out leaks. To check long-running behavior:
    1. Leave the app running for 30 to 60 minutes and confirm Real/Private Memory stays stable.
    2. Open and close the popover several times and confirm memory returns to its previous level.
    3. If memory keeps growing, use Instruments (Leaks / Allocations) or the Xcode Memory Graph Debugger.

License

Released under the MIT License.

About

A lightweight macOS menu bar app focused on memory monitoring for multiple users

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages