OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/host_discardable_shared_memory_manager.h" | 5 #include "content/common/host_discardable_shared_memory_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/debug/crash_logging.h" | 10 #include "base/debug/crash_logging.h" |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 enforce_memory_policy_pending_ = false; | 152 enforce_memory_policy_pending_ = false; |
153 ReduceMemoryUsageUntilWithinMemoryLimit(); | 153 ReduceMemoryUsageUntilWithinMemoryLimit(); |
154 } | 154 } |
155 | 155 |
156 void HostDiscardableSharedMemoryManager::OnMemoryPressure( | 156 void HostDiscardableSharedMemoryManager::OnMemoryPressure( |
157 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { | 157 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
158 base::AutoLock lock(lock_); | 158 base::AutoLock lock(lock_); |
159 | 159 |
160 switch (memory_pressure_level) { | 160 switch (memory_pressure_level) { |
161 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE: | 161 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE: |
| 162 break; |
162 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE: | 163 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE: |
| 164 // Purge memory until usage is within half of |memory_limit_|. |
| 165 ReduceMemoryUsageUntilWithinLimit(memory_limit_ / 2); |
163 break; | 166 break; |
164 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL: | 167 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL: |
165 // Purge everything possible when pressure is critical. | 168 // Purge everything possible when pressure is critical. |
166 ReduceMemoryUsageUntilWithinLimit(0); | 169 ReduceMemoryUsageUntilWithinLimit(0); |
167 break; | 170 break; |
168 } | 171 } |
169 } | 172 } |
170 | 173 |
171 void | 174 void |
172 HostDiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinMemoryLimit() { | 175 HostDiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinMemoryLimit() { |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 250 |
248 enforce_memory_policy_pending_ = true; | 251 enforce_memory_policy_pending_ = true; |
249 base::MessageLoop::current()->PostDelayedTask( | 252 base::MessageLoop::current()->PostDelayedTask( |
250 FROM_HERE, | 253 FROM_HERE, |
251 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, | 254 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, |
252 weak_ptr_factory_.GetWeakPtr()), | 255 weak_ptr_factory_.GetWeakPtr()), |
253 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); | 256 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); |
254 } | 257 } |
255 | 258 |
256 } // namespace content | 259 } // namespace content |
OLD | NEW |