blob: c9f9f3f6c55d3da680faad2b659e2622a9b757f3 [file] [log] [blame]
halcanary0d154ee2014-08-11 11:33:51 -07001/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "ProcStats.h"
9
10#if defined(SK_BUILD_FOR_UNIX) || \
11 defined(SK_BUILD_FOR_MAC) || \
12 defined(SK_BUILD_FOR_ANDROID)
13
14 #include <sys/resource.h>
mtkleinafb43792014-08-19 15:55:55 -070015 int sk_tools::getMaxResidentSetSizeMB() {
halcanary0d154ee2014-08-11 11:33:51 -070016 struct rusage ru;
17 getrusage(RUSAGE_SELF, &ru);
18 #if defined(SK_BUILD_FOR_MAC)
mtkleinafb43792014-08-19 15:55:55 -070019 return static_cast<int>(ru.ru_maxrss / 1024 / 1024); // Darwin reports bytes.
halcanary0d154ee2014-08-11 11:33:51 -070020 #else
mtkleinafb43792014-08-19 15:55:55 -070021 return static_cast<int>(ru.ru_maxrss / 1024); // Linux reports kilobytes.
halcanary0d154ee2014-08-11 11:33:51 -070022 #endif
23 }
24
mtklein9abf4f82014-10-21 12:23:12 -070025#elif defined(SK_BUILD_FOR_WIN32)
26 #include <windows.h>
27 #include <psapi.h>
28 int sk_tools::getMaxResidentSetSizeMB() {
29 PROCESS_MEMORY_COUNTERS info;
30 GetProcessMemoryInfo(GetCurrentProcess(), &info, sizeof(info));
31 return static_cast<int>(info.PeakWorkingSetSize / 1024 / 1024); // Windows reports bytes.
32 }
halcanary0d154ee2014-08-11 11:33:51 -070033
mtklein9abf4f82014-10-21 12:23:12 -070034#else
mtkleinafb43792014-08-19 15:55:55 -070035 int sk_tools::getMaxResidentSetSizeMB() {
halcanary0d154ee2014-08-11 11:33:51 -070036 return -1;
37 }
38
39#endif