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 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/atomic_sequence_num.h" | 10 #include "base/atomic_sequence_num.h" |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
157 } // namespace | 157 } // namespace |
158 | 158 |
159 HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment( | 159 HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment( |
160 std::unique_ptr<base::DiscardableSharedMemory> memory) | 160 std::unique_ptr<base::DiscardableSharedMemory> memory) |
161 : memory_(std::move(memory)) {} | 161 : memory_(std::move(memory)) {} |
162 | 162 |
163 HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() { | 163 HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() { |
164 } | 164 } |
165 | 165 |
166 HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager() | 166 HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager() |
167 : memory_limit_(GetDefaultMemoryLimit()), | 167 : default_memory_limit_(GetDefaultMemoryLimit()), |
bashi
2016/10/04 03:13:10
Though GetDefaultMemoryLimit() could be dynamicall
| |
168 memory_limit_(default_memory_limit_), | |
168 bytes_allocated_(0), | 169 bytes_allocated_(0), |
169 memory_pressure_listener_(new base::MemoryPressureListener( | 170 memory_pressure_listener_(new base::MemoryPressureListener( |
170 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, | 171 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, |
171 base::Unretained(this)))), | 172 base::Unretained(this)))), |
172 // Current thread might not have a task runner in tests. | 173 // Current thread might not have a task runner in tests. |
173 enforce_memory_policy_task_runner_(base::ThreadTaskRunnerHandle::Get()), | 174 enforce_memory_policy_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
174 enforce_memory_policy_pending_(false), | 175 enforce_memory_policy_pending_(false), |
175 weak_ptr_factory_(this) { | 176 weak_ptr_factory_(this) { |
176 DCHECK_NE(memory_limit_, 0u); | 177 DCHECK_NE(memory_limit_, 0u); |
177 enforce_memory_policy_callback_ = | 178 enforce_memory_policy_callback_ = |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
345 size_t HostDiscardableSharedMemoryManager::GetBytesAllocated() { | 346 size_t HostDiscardableSharedMemoryManager::GetBytesAllocated() { |
346 base::AutoLock lock(lock_); | 347 base::AutoLock lock(lock_); |
347 | 348 |
348 return bytes_allocated_; | 349 return bytes_allocated_; |
349 } | 350 } |
350 | 351 |
351 void HostDiscardableSharedMemoryManager::OnMemoryStateChange( | 352 void HostDiscardableSharedMemoryManager::OnMemoryStateChange( |
352 base::MemoryState state) { | 353 base::MemoryState state) { |
353 switch (state) { | 354 switch (state) { |
354 case base::MemoryState::NORMAL: | 355 case base::MemoryState::NORMAL: |
355 SetMemoryLimit(GetDefaultMemoryLimit()); | 356 SetMemoryLimit(default_memory_limit_); |
356 break; | 357 break; |
357 case base::MemoryState::THROTTLED: | 358 case base::MemoryState::THROTTLED: |
358 SetMemoryLimit(0); | 359 SetMemoryLimit(0); |
359 break; | 360 break; |
360 case base::MemoryState::SUSPENDED: | 361 case base::MemoryState::SUSPENDED: |
361 // Note that SUSPENDED never occurs in the main browser process so far. | 362 // Note that SUSPENDED never occurs in the main browser process so far. |
362 // Fall through. | 363 // Fall through. |
363 case base::MemoryState::UNKNOWN: | 364 case base::MemoryState::UNKNOWN: |
364 NOTREACHED(); | 365 NOTREACHED(); |
365 break; | 366 break; |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
570 return; | 571 return; |
571 | 572 |
572 enforce_memory_policy_pending_ = true; | 573 enforce_memory_policy_pending_ = true; |
573 DCHECK(enforce_memory_policy_task_runner_); | 574 DCHECK(enforce_memory_policy_task_runner_); |
574 enforce_memory_policy_task_runner_->PostDelayedTask( | 575 enforce_memory_policy_task_runner_->PostDelayedTask( |
575 FROM_HERE, enforce_memory_policy_callback_, | 576 FROM_HERE, enforce_memory_policy_callback_, |
576 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); | 577 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); |
577 } | 578 } |
578 | 579 |
579 } // namespace content | 580 } // namespace content |
OLD | NEW |