| Index: base/process/process_metrics_posix.cc | 
| diff --git a/base/process/process_metrics_posix.cc b/base/process/process_metrics_posix.cc | 
| index a4445e8bc2e80ff6fdac1e04074224298ba422ca..677e26d12148d084f21a2906837e939f82be4664 100644 | 
| --- a/base/process/process_metrics_posix.cc | 
| +++ b/base/process/process_metrics_posix.cc | 
| @@ -14,6 +14,12 @@ | 
| #include "base/logging.h" | 
| #include "build/build_config.h" | 
|  | 
| +#if defined(OS_MACOSX) | 
| +#include <malloc/malloc.h> | 
| +#else | 
| +#include <malloc.h> | 
| +#endif | 
| + | 
| namespace base { | 
|  | 
| int64_t TimeValToMicroseconds(const struct timeval& tv) { | 
| @@ -83,4 +89,19 @@ size_t GetPageSize() { | 
| return getpagesize(); | 
| } | 
|  | 
| +size_t ProcessMetrics::GetMallocUsage() { | 
| +#if defined(OS_MACOSX) || defined(OS_IOS) | 
| +  malloc_statistics_t stats = {0}; | 
| +  malloc_zone_statistics(nullptr, &stats); | 
| +  return stats.size_in_use; | 
| +#elif defined(OS_LINUX) || defined(OS_ANDROID) | 
| +  struct mallinfo minfo = mallinfo(); | 
| +#if defined(USE_TCMALLOC) | 
| +  return minfo.uordblks; | 
| +#else | 
| +  return minfo.hblkhd + minfo.arena; | 
| +#endif | 
| +#endif | 
| +} | 
| + | 
| }  // namespace base | 
|  |