| Index: base/process/process_metrics.h
|
| diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h
|
| index 2448a715ace9b5eade7f09524561ffcedb666cc3..81c52266ceefb4cd4ddfba02c9f09c0833f450ce 100644
|
| --- a/base/process/process_metrics.h
|
| +++ b/base/process/process_metrics.h
|
| @@ -261,11 +261,13 @@ BASE_EXPORT void SetFdLimit(unsigned int max_descriptors);
|
| // Data about system-wide memory consumption. Values are in KB. Available on
|
| // Windows, Mac, Linux, Android and Chrome OS.
|
| //
|
| -// Total/free memory are available on all platforms that implement
|
| +// Total memory are available on all platforms that implement
|
| // GetSystemMemoryInfo(). Total/free swap memory are available on all platforms
|
| // except on Mac. Buffers/cached/active_anon/inactive_anon/active_file/
|
| -// inactive_file/dirty/pswpin/pswpout/pgmajfault are available on
|
| +// inactive_file/dirty/reclaimable/pswpin/pswpout/pgmajfault are available on
|
| // Linux/Android/Chrome OS. Shmem/slab/gem_objects/gem_size are Chrome OS only.
|
| +// Speculative/file_backed/purgeable are Mac and iOS only.
|
| +// Free is absent on Windows (see "avail_phys" below).
|
| struct BASE_EXPORT SystemMemoryInfoKB {
|
| SystemMemoryInfoKB();
|
| SystemMemoryInfoKB(const SystemMemoryInfoKB& other);
|
| @@ -273,44 +275,64 @@ struct BASE_EXPORT SystemMemoryInfoKB {
|
| // Serializes the platform specific fields to value.
|
| std::unique_ptr<Value> ToValue() const;
|
|
|
| - int total;
|
| - int free;
|
| + int total = 0;
|
|
|
| -#if defined(OS_LINUX)
|
| +#if !defined(OS_WIN)
|
| + int free = 0;
|
| +#endif
|
| +
|
| +#if defined(OS_WIN)
|
| + // "This is the amount of physical memory that can be immediately reused
|
| + // without having to write its contents to disk first. It is the sum of the
|
| + // size of the standby, free, and zero lists." (MSDN).
|
| + // Standby: not modified pages of physical ram (file-backed memory) that are
|
| + // not actively being used.
|
| + int avail_phys = 0;
|
| +#endif
|
| +
|
| +#if defined(OS_LINUX) || defined(OS_ANDROID)
|
| // This provides an estimate of available memory as described here:
|
| // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
|
| // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
|
| // be 0 in earlier kernel versions.
|
| - int available;
|
| + // Note: it includes _all_ file-backed memory (active + inactive).
|
| + int available = 0;
|
| #endif
|
|
|
| #if !defined(OS_MACOSX)
|
| - int swap_total;
|
| - int swap_free;
|
| + int swap_total = 0;
|
| + int swap_free = 0;
|
| #endif
|
|
|
| #if defined(OS_ANDROID) || defined(OS_LINUX)
|
| - int buffers;
|
| - int cached;
|
| - int active_anon;
|
| - int inactive_anon;
|
| - int active_file;
|
| - int inactive_file;
|
| - int dirty;
|
| + int buffers = 0;
|
| + int cached = 0;
|
| + int active_anon = 0;
|
| + int inactive_anon = 0;
|
| + int active_file = 0;
|
| + int inactive_file = 0;
|
| + int dirty = 0;
|
| + int reclaimable = 0;
|
|
|
| // vmstats data.
|
| - unsigned long pswpin;
|
| - unsigned long pswpout;
|
| - unsigned long pgmajfault;
|
| + unsigned long pswpin = 0;
|
| + unsigned long pswpout = 0;
|
| + unsigned long pgmajfault = 0;
|
| #endif // defined(OS_ANDROID) || defined(OS_LINUX)
|
|
|
| #if defined(OS_CHROMEOS)
|
| - int shmem;
|
| - int slab;
|
| + int shmem = 0;
|
| + int slab = 0;
|
| // Gem data will be -1 if not supported.
|
| - int gem_objects;
|
| - long long gem_size;
|
| + int gem_objects = -1;
|
| + long long gem_size = -1;
|
| #endif // defined(OS_CHROMEOS)
|
| +
|
| +#if defined(OS_MACOSX)
|
| + int speculative = 0;
|
| + int file_backed = 0;
|
| + int purgeable = 0;
|
| +#endif // defined(OS_MACOSX)
|
| };
|
|
|
| // On Linux/Android/Chrome OS, system-wide memory consumption data is parsed
|
|
|