| Index: net/http/http_cache.cc
|
| diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc
|
| index ccded67606f609db8bce433b09614b4766c130fb..e7cfa18d0f64f0492176be027a051252ae264b1a 100644
|
| --- a/net/http/http_cache.cc
|
| +++ b/net/http/http_cache.cc
|
| @@ -28,6 +28,9 @@
|
| #include "base/threading/worker_pool.h"
|
| #include "base/time/default_clock.h"
|
| #include "base/time/time.h"
|
| +#include "base/trace_event/memory_allocator_dump.h"
|
| +#include "base/trace_event/memory_usage_estimator.h"
|
| +#include "base/trace_event/process_memory_dump.h"
|
| #include "net/base/cache_type.h"
|
| #include "net/base/io_buffer.h"
|
| #include "net/base/load_flags.h"
|
| @@ -106,6 +109,11 @@ HttpCache::ActiveEntry::~ActiveEntry() {
|
| }
|
| }
|
|
|
| +size_t HttpCache::ActiveEntry::EstimateMemoryUsage() const {
|
| + return base::trace_event::EstimateMemoryUsage(readers) +
|
| + base::trace_event::EstimateMemoryUsage(pending_queue);
|
| +}
|
| +
|
| //-----------------------------------------------------------------------------
|
|
|
| // This structure keeps track of work items that are attempting to create or
|
| @@ -114,6 +122,13 @@ struct HttpCache::PendingOp {
|
| PendingOp() : disk_entry(NULL) {}
|
| ~PendingOp() {}
|
|
|
| + // Returns the estimate of dynamically allocated memory in bytes.
|
| + size_t EstimateMemoryUsage() const {
|
| + return base::trace_event::EstimateMemoryUsage(backend) +
|
| + base::trace_event::EstimateMemoryUsage(writer) +
|
| + base::trace_event::EstimateMemoryUsage(pending_queue);
|
| + }
|
| +
|
| disk_cache::Entry* disk_entry;
|
| std::unique_ptr<disk_cache::Backend> backend;
|
| std::unique_ptr<WorkItem> writer;
|
| @@ -178,6 +193,8 @@ class HttpCache::WorkItem {
|
| void ClearCallback() { callback_.Reset(); }
|
| bool Matches(Transaction* trans) const { return trans == trans_; }
|
| bool IsValid() const { return trans_ || entry_ || !callback_.is_null(); }
|
| + // Returns the estimate of dynamically allocated memory in bytes.
|
| + size_t EstimateMemoryUsage() const { return 0; }
|
|
|
| private:
|
| WorkItemOperation operation_;
|
| @@ -483,6 +500,21 @@ HttpCache::SetHttpNetworkTransactionFactoryForTesting(
|
| return old_network_layer;
|
| }
|
|
|
| +void HttpCache::DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd,
|
| + const std::string& parent_absolute_name) const {
|
| + size_t memory_estimate =
|
| + base::trace_event::EstimateMemoryUsage(disk_cache_) +
|
| + base::trace_event::EstimateMemoryUsage(active_entries_) +
|
| + base::trace_event::EstimateMemoryUsage(doomed_entries_) +
|
| + base::trace_event::EstimateMemoryUsage(playback_cache_map_) +
|
| + base::trace_event::EstimateMemoryUsage(pending_ops_);
|
| + base::trace_event::MemoryAllocatorDump* dump =
|
| + pmd->CreateAllocatorDump(parent_absolute_name + "/http_cache");
|
| + dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
|
| + base::trace_event::MemoryAllocatorDump::kUnitsBytes,
|
| + memory_estimate);
|
| +}
|
| +
|
| //-----------------------------------------------------------------------------
|
|
|
| int HttpCache::CreateBackend(disk_cache::Backend** backend,
|
|
|