blob: a12b65d1b903e050854488dc259ed98a9a3659b3 [file] [log] [blame]
// Copyright 2016 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 "public/web/WebMemoryStatistics.h"
#include "platform/heap/Heap.h"
#include "wtf/allocator/Partitions.h"
namespace blink {
namespace {
class LightPartitionStatsDumperImpl : public WTF::PartitionStatsDumper {
public:
LightPartitionStatsDumperImpl() : m_totalActiveBytes(0) {}
void partitionDumpTotals(
const char* partitionName,
const WTF::PartitionMemoryStats* memoryStats) override {
m_totalActiveBytes += memoryStats->totalActiveBytes;
}
void partitionsDumpBucketStats(
const char* partitionName,
const WTF::PartitionBucketMemoryStats*) override {}
size_t totalActiveBytes() const { return m_totalActiveBytes; }
private:
size_t m_totalActiveBytes;
};
} // namespace
WebMemoryStatistics WebMemoryStatistics::Get() {
LightPartitionStatsDumperImpl dumper;
WebMemoryStatistics statistics;
WTF::Partitions::dumpMemoryStats(true, &dumper);
statistics.partitionAllocTotalAllocatedBytes = dumper.totalActiveBytes();
statistics.blinkGCTotalAllocatedBytes =
ProcessHeap::totalAllocatedObjectSize() +
ProcessHeap::totalMarkedObjectSize();
return statistics;
}
} // namespace blink