diff options
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.cc | 11 |
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; |