OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 "content/child/web_process_memory_dump_impl.h" | 5 #include "content/child/web_process_memory_dump_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/memory/discardable_memory.h" | 9 #include "base/memory/discardable_memory.h" |
| 10 #include "base/trace_event/heap_profiler_heap_dump_writer.h" |
10 #include "base/trace_event/process_memory_dump.h" | 11 #include "base/trace_event/process_memory_dump.h" |
| 12 #include "base/trace_event/trace_event_argument.h" |
| 13 #include "base/trace_event/trace_event_memory_overhead.h" |
11 #include "content/child/web_memory_allocator_dump_impl.h" | 14 #include "content/child/web_memory_allocator_dump_impl.h" |
12 #include "skia/ext/skia_trace_memory_dump_impl.h" | 15 #include "skia/ext/skia_trace_memory_dump_impl.h" |
13 | 16 |
14 namespace content { | 17 namespace content { |
15 | 18 |
16 WebProcessMemoryDumpImpl::WebProcessMemoryDumpImpl() | 19 WebProcessMemoryDumpImpl::WebProcessMemoryDumpImpl() |
17 : owned_process_memory_dump_( | 20 : owned_process_memory_dump_( |
18 new base::trace_event::ProcessMemoryDump(nullptr)), | 21 new base::trace_event::ProcessMemoryDump(nullptr)), |
19 process_memory_dump_(owned_process_memory_dump_.get()), | 22 process_memory_dump_(owned_process_memory_dump_.get()), |
20 level_of_detail_(base::trace_event::MemoryDumpLevelOfDetail::DETAILED) {} | 23 level_of_detail_(base::trace_event::MemoryDumpLevelOfDetail::DETAILED) {} |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 blink::WebMemoryAllocatorDump* | 158 blink::WebMemoryAllocatorDump* |
156 WebProcessMemoryDumpImpl::CreateDiscardableMemoryAllocatorDump( | 159 WebProcessMemoryDumpImpl::CreateDiscardableMemoryAllocatorDump( |
157 const std::string& name, | 160 const std::string& name, |
158 base::DiscardableMemory* discardable) { | 161 base::DiscardableMemory* discardable) { |
159 base::trace_event::MemoryAllocatorDump* dump = | 162 base::trace_event::MemoryAllocatorDump* dump = |
160 discardable->CreateMemoryAllocatorDump(name.c_str(), | 163 discardable->CreateMemoryAllocatorDump(name.c_str(), |
161 process_memory_dump_); | 164 process_memory_dump_); |
162 return createWebMemoryAllocatorDump(dump); | 165 return createWebMemoryAllocatorDump(dump); |
163 } | 166 } |
164 | 167 |
| 168 void WebProcessMemoryDumpImpl::dumpHeapUsage( |
| 169 const base::hash_map<base::trace_event::AllocationContext, size_t>& |
| 170 bytes_by_context, |
| 171 base::trace_event::TraceEventMemoryOverhead& overhead, |
| 172 const char* allocator_name) { |
| 173 scoped_refptr<base::trace_event::MemoryDumpSessionState> session_state = |
| 174 process_memory_dump_->session_state(); |
| 175 scoped_refptr<base::trace_event::TracedValue> heap_dump = ExportHeapDump( |
| 176 bytes_by_context, |
| 177 session_state->stack_frame_deduplicator(), |
| 178 session_state->type_name_deduplicator()); |
| 179 process_memory_dump_->AddHeapDump(allocator_name, heap_dump); |
| 180 overhead.DumpInto("tracing/heap_profiler", process_memory_dump_); |
| 181 } |
| 182 |
165 } // namespace content | 183 } // namespace content |
OLD | NEW |