// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/trace_event/java_heap_dump_provider_android.h" #include "base/android/java_runtime.h" #include "base/trace_event/process_memory_dump.h" namespace base { namespace trace_event { // static JavaHeapDumpProvider* JavaHeapDumpProvider::GetInstance() { return Singleton>::get(); } JavaHeapDumpProvider::JavaHeapDumpProvider() { } JavaHeapDumpProvider::~JavaHeapDumpProvider() { } // Called at trace dump point time. Creates a snapshot with the memory counters // for the current process. bool JavaHeapDumpProvider::OnMemoryDump(const MemoryDumpArgs& args, ProcessMemoryDump* pmd) { // These numbers come from java.lang.Runtime stats. long total_heap_size = 0; long free_heap_size = 0; android::JavaRuntime::GetMemoryUsage(&total_heap_size, &free_heap_size); MemoryAllocatorDump* outer_dump = pmd->CreateAllocatorDump("java_heap"); outer_dump->AddScalar(MemoryAllocatorDump::kNameSize, MemoryAllocatorDump::kUnitsBytes, total_heap_size); MemoryAllocatorDump* inner_dump = pmd->CreateAllocatorDump("java_heap/allocated_objects"); inner_dump->AddScalar(MemoryAllocatorDump::kNameSize, MemoryAllocatorDump::kUnitsBytes, total_heap_size - free_heap_size); return true; } } // namespace trace_event } // namespace base