1 // Copyright 2015 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/trace_event/process_memory_totals.h" 6 7 #include "base/format_macros.h" 8 #include "base/strings/stringprintf.h" 9 #include "base/trace_event/trace_event_argument.h" 10 11 namespace base { 12 namespace trace_event { 13 14 ProcessMemoryTotals::ProcessMemoryTotals() 15 : resident_set_bytes_(0), 16 peak_resident_set_bytes_(0), 17 is_peak_rss_resetable_(false) { 18 } 19 20 ProcessMemoryTotals::~ProcessMemoryTotals() {} 21 22 void ProcessMemoryTotals::AsValueInto(TracedValue* value) const { 23 value->SetString("resident_set_bytes", 24 StringPrintf("%" PRIx64, resident_set_bytes_)); 25 if (peak_resident_set_bytes_ > 0) { 26 value->SetString("peak_resident_set_bytes", 27 StringPrintf("%" PRIx64, peak_resident_set_bytes_)); 28 value->SetBoolean("is_peak_rss_resetable", is_peak_rss_resetable_); 29 } 30 31 for (const auto it : extra_fields_) { 32 value->SetString(it.first, StringPrintf("%" PRIx64, it.second)); 33 } 34 } 35 36 void ProcessMemoryTotals::Clear() { 37 resident_set_bytes_ = 0; 38 } 39 40 void ProcessMemoryTotals::SetExtraFieldInBytes(const char* name, 41 uint64_t value) { 42 DCHECK_EQ(0u, extra_fields_.count(name)); 43 extra_fields_[name] = value; 44 } 45 46 } // namespace trace_event 47 } // namespace base 48