OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ios/chrome/browser/memory/memory_metrics.h" | 5 #include "ios/chrome/browser/memory/memory_metrics.h" |
6 | 6 |
7 #include <mach/mach.h> | 7 #include <mach/mach.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
| 11 #include <memory> |
| 12 |
11 #include "base/logging.h" | 13 #include "base/logging.h" |
12 #include "base/mac/scoped_mach_port.h" | 14 #include "base/mac/scoped_mach_port.h" |
13 #include "base/memory/scoped_ptr.h" | |
14 #include "base/process/process_handle.h" | 15 #include "base/process/process_handle.h" |
15 #include "base/process/process_metrics.h" | 16 #include "base/process/process_metrics.h" |
16 #include "build/build_config.h" | 17 #include "build/build_config.h" |
17 | 18 |
18 #ifdef ARCH_CPU_64_BITS | 19 #ifdef ARCH_CPU_64_BITS |
19 #define cr_vm_region vm_region_64 | 20 #define cr_vm_region vm_region_64 |
20 #else | 21 #else |
21 #define cr_vm_region vm_region | 22 #define cr_vm_region vm_region |
22 #endif | 23 #endif |
23 | 24 |
(...skipping 16 matching lines...) Expand all Loading... |
40 host.get(), HOST_VM_INFO, reinterpret_cast<host_info_t>(&vmstat), &count); | 41 host.get(), HOST_VM_INFO, reinterpret_cast<host_info_t>(&vmstat), &count); |
41 if (result != KERN_SUCCESS) { | 42 if (result != KERN_SUCCESS) { |
42 LOG(ERROR) << "Calling host_statistics failed."; | 43 LOG(ERROR) << "Calling host_statistics failed."; |
43 return 0; | 44 return 0; |
44 } | 45 } |
45 return vmstat.free_count * kVMPageSize; | 46 return vmstat.free_count * kVMPageSize; |
46 } | 47 } |
47 | 48 |
48 uint64_t GetRealMemoryUsedInBytes() { | 49 uint64_t GetRealMemoryUsedInBytes() { |
49 base::ProcessHandle process_handle = base::GetCurrentProcessHandle(); | 50 base::ProcessHandle process_handle = base::GetCurrentProcessHandle(); |
50 scoped_ptr<base::ProcessMetrics> process_metrics( | 51 std::unique_ptr<base::ProcessMetrics> process_metrics( |
51 base::ProcessMetrics::CreateProcessMetrics(process_handle)); | 52 base::ProcessMetrics::CreateProcessMetrics(process_handle)); |
52 return static_cast<uint64_t>(process_metrics->GetWorkingSetSize()); | 53 return static_cast<uint64_t>(process_metrics->GetWorkingSetSize()); |
53 } | 54 } |
54 | 55 |
55 uint64_t GetDirtyVMBytes() { | 56 uint64_t GetDirtyVMBytes() { |
56 // Iterate over all VM regions and sum their dirty pages. | 57 // Iterate over all VM regions and sum their dirty pages. |
57 unsigned int total_dirty_pages = 0; | 58 unsigned int total_dirty_pages = 0; |
58 vm_size_t vm_size = 0; | 59 vm_size_t vm_size = 0; |
59 kern_return_t result; | 60 kern_return_t result; |
60 for (vm_address_t address = MACH_VM_MIN_ADDRESS;; address += vm_size) { | 61 for (vm_address_t address = MACH_VM_MIN_ADDRESS;; address += vm_size) { |
(...skipping 24 matching lines...) Expand all Loading... |
85 reinterpret_cast<task_info_t>(&task_vm_info), &count); | 86 reinterpret_cast<task_info_t>(&task_vm_info), &count); |
86 if (result != KERN_SUCCESS) { | 87 if (result != KERN_SUCCESS) { |
87 LOG(ERROR) << "Calling task_info failed."; | 88 LOG(ERROR) << "Calling task_info failed."; |
88 return 0; | 89 return 0; |
89 } | 90 } |
90 | 91 |
91 return static_cast<uint64_t>(task_vm_info.internal); | 92 return static_cast<uint64_t>(task_vm_info.internal); |
92 } | 93 } |
93 | 94 |
94 } // namespace memory_util | 95 } // namespace memory_util |
OLD | NEW |