diff options
author | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-11 13:27:01 +0000 |
---|---|---|
committer | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-11 13:27:01 +0000 |
commit | 2b4207733799c9a1922dc786d2583a69cae91ac4 (patch) | |
tree | 3f734fe038f2462316e595b8c0e6b51bb0bcf2e1 /base | |
parent | 04783d250baca80685ff1ec6673b2d1b83f51861 (diff) | |
download | chromium_src-2b4207733799c9a1922dc786d2583a69cae91ac4.zip chromium_src-2b4207733799c9a1922dc786d2583a69cae91ac4.tar.gz chromium_src-2b4207733799c9a1922dc786d2583a69cae91ac4.tar.bz2 |
base: Add a trace counter for amount of discardable memory allocated.
This adds a trace counter to the discardable memory manager for
the amount of memory allocated. Useful when debugging performance
issues related to discardable memory usage.
BUG=310231
Review URL: https://codereview.chromium.org/234363002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263221 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/memory/discardable_memory_manager.cc | 13 | ||||
-rw-r--r-- | base/memory/discardable_memory_manager.h | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/base/memory/discardable_memory_manager.cc b/base/memory/discardable_memory_manager.cc index c1b9f36..e31f932 100644 --- a/base/memory/discardable_memory_manager.cc +++ b/base/memory/discardable_memory_manager.cc @@ -30,6 +30,7 @@ DiscardableMemoryManager::DiscardableMemoryManager() discardable_memory_limit_(kDefaultDiscardableMemoryLimit), bytes_to_keep_under_moderate_pressure_( kDefaultBytesToKeepUnderModeratePressure) { + BytesAllocatedChanged(); } DiscardableMemoryManager::~DiscardableMemoryManager() { @@ -88,6 +89,7 @@ void DiscardableMemoryManager::Unregister( size_t bytes = it->second.bytes; DCHECK_LE(bytes, bytes_allocated_); bytes_allocated_ -= bytes; + BytesAllocatedChanged(); free(it->second.memory); } allocations_.Erase(it); @@ -130,6 +132,8 @@ scoped_ptr<uint8, FreeDeleter> DiscardableMemoryManager::Acquire( return scoped_ptr<uint8, FreeDeleter>(); bytes_allocated_ += bytes; + BytesAllocatedChanged(); + *purged = true; return memory.Pass(); } @@ -217,11 +221,20 @@ void DiscardableMemoryManager::PurgeLRUWithLockAcquiredUntilUsageIsWithin( free(it->second.memory); it->second.memory = NULL; } + + BytesAllocatedChanged(); } void DiscardableMemoryManager::EnforcePolicyWithLockAcquired() { PurgeLRUWithLockAcquiredUntilUsageIsWithin(discardable_memory_limit_); } +void DiscardableMemoryManager::BytesAllocatedChanged() const { + TRACE_COUNTER_ID1("base", + "DiscardableMemoryUsage", + this, + bytes_allocated_); +} + } // namespace internal } // namespace base diff --git a/base/memory/discardable_memory_manager.h b/base/memory/discardable_memory_manager.h index 2b72c51..7c0bd5c 100644 --- a/base/memory/discardable_memory_manager.h +++ b/base/memory/discardable_memory_manager.h @@ -121,6 +121,9 @@ class BASE_EXPORT_PRIVATE DiscardableMemoryManager { // Caller must acquire |lock_| prior to calling this function. void EnforcePolicyWithLockAcquired(); + // Called when a change to |bytes_allocated_| has been made. + void BytesAllocatedChanged() const; + // Needs to be held when accessing members. mutable Lock lock_; |