Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index e652d229f3a8dafb4e6b58e018370886ba4de931..a438f5cef23aa991bbb3ca2fa6dc619cdaf3763f 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -15,6 +15,7 @@ |
#include "base/lazy_instance.h" |
#include "base/logging.h" |
#include "base/memory/discardable_memory.h" |
+#include "base/memory/discardable_memory_emulated.h" |
#include "base/memory/shared_memory.h" |
#include "base/metrics/field_trial.h" |
#include "base/metrics/histogram.h" |
@@ -534,10 +535,6 @@ void RenderThreadImpl::Init() { |
base::DiscardableMemory::SetPreferredType(type); |
- // Allow discardable memory implementations to register memory pressure |
- // listeners. |
- base::DiscardableMemory::RegisterMemoryPressureListeners(); |
- |
// AllocateGpuMemoryBuffer must be used exclusively on one thread but |
// it doesn't have to be the same thread RenderThreadImpl is created on. |
allocate_gpu_memory_buffer_thread_checker_.DetachFromThread(); |
@@ -1609,6 +1606,11 @@ void RenderThreadImpl::WidgetHidden() { |
hidden_widget_count_++; |
if (widget_count_ && hidden_widget_count_ == widget_count_) { |
+ // We emulate a "moderate memory pressure" event for emulated discardable |
+ // memory to make sure that background tabs don't use too much memory. |
+ base::DiscardableMemoryEmulated:: |
+ ReduceMemoryUsageUntilWithinModeratePressureLimit(); |
+ |
if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) |
ScheduleIdleHandler(kInitialIdleHandlerDelayMs); |
} |