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 |