feat: add fileBacked and purgeable fields to process.getSystemMemoryInfo() for macOS (#47628)

* fix: Optimize the value of memory.free in the return data of getSystemMemoryInfo().

* fix: Improve the value of memory in the return data of getSystemMemoryInfo().

* fix: complete API doc.

* Update docs/api/process.md

Co-authored-by: Will Anderson <will@itsananderson.com>

* fix: update name to fileBacked.

* fix: fix with code conflict

---------

Co-authored-by: Will Anderson <will@itsananderson.com>
This commit is contained in:
BILL SHEN 2025-08-20 15:49:41 +08:00 committed by GitHub
commit 83a5ba1e2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 1 deletions

View file

@ -211,6 +211,10 @@ Returns `Object`:
system. system.
* `free` Integer - The total amount of memory not being used by applications or disk * `free` Integer - The total amount of memory not being used by applications or disk
cache. cache.
* `fileBacked` Integer _macOS_ - The amount of memory that currently has been paged out to storage.
Includes memory for file caches, network buffers, and other system services.
* `purgeable` Integer _macOS_ - The amount of memory that is marked as "purgeable". The system can reclaim it
if memory pressure increases.
* `swapTotal` Integer _Windows_ _Linux_ - The total amount of swap memory in Kilobytes available to the * `swapTotal` Integer _Windows_ _Linux_ - The total amount of swap memory in Kilobytes available to the
system. system.
* `swapFree` Integer _Windows_ _Linux_ - The free amount of swap memory in Kilobytes available to the * `swapFree` Integer _Windows_ _Linux_ - The free amount of swap memory in Kilobytes available to the

View file

@ -183,8 +183,11 @@ v8::Local<v8::Value> ElectronBindings::GetSystemMemoryInfo(
#endif #endif
dict.Set("free", free.InKiB()); dict.Set("free", free.InKiB());
#if BUILDFLAG(IS_MAC)
dict.Set("fileBacked", mem_info.file_backed.InKiB());
dict.Set("purgeable", mem_info.purgeable.InKiB());
#else
// NB: These return bogus values on macOS // NB: These return bogus values on macOS
#if !BUILDFLAG(IS_MAC)
dict.Set("swapTotal", mem_info.swap_total.InKiB()); dict.Set("swapTotal", mem_info.swap_total.InKiB());
dict.Set("swapFree", mem_info.swap_free.InKiB()); dict.Set("swapFree", mem_info.swap_free.InKiB());
#endif #endif