summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc')
-rw-r--r--chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc b/chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc
index 811cc0cb55f..07afb6e13a7 100644
--- a/chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc
+++ b/chromium/third_party/blink/renderer/platform/scheduler/main_thread/memory_purge_manager.cc
@@ -76,6 +76,10 @@ void MemoryPurgeManager::OnPageDestroyed(PageLifecycleState state) {
total_page_count_--;
if (state == PageLifecycleState::kFrozen)
frozen_page_count_--;
+
+ if (!CanPurge())
+ purge_timer_.Stop();
+
DCHECK_LE(frozen_page_count_, total_page_count_);
}
@@ -110,6 +114,10 @@ void MemoryPurgeManager::OnRendererBackgrounded() {
if (!base::FeatureList::IsEnabled(
features::kPurgeRendererMemoryWhenBackgrounded))
return;
+ // A spare renderer has no pages. We would like to avoid purging memory
+ // on a spare renderer.
+ if (total_page_count_ == 0)
+ return;
backgrounded_purge_pending_ = true;
RequestMemoryPurgeWithDelay(GetTimeToPurgeAfterBackgrounded());
@@ -145,6 +153,9 @@ void MemoryPurgeManager::PerformMemoryPurge() {
}
bool MemoryPurgeManager::CanPurge() const {
+ if (total_page_count_ == 0)
+ return false;
+
if (backgrounded_purge_pending_)
return true;