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 |