| 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/atomic_sequence_num.h" | 9 #include "base/atomic_sequence_num.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 std::min(base::SysInfo::AmountOfPhysicalMemory() / 4, | 116 std::min(base::SysInfo::AmountOfPhysicalMemory() / 4, |
| 117 base::SysInfo::IsLowEndDevice() | 117 base::SysInfo::IsLowEndDevice() |
| 118 ? | 118 ? |
| 119 // Use 1/8th of discardable memory on low-end devices. | 119 // Use 1/8th of discardable memory on low-end devices. |
| 120 kMaxDefaultMemoryLimit / 8 | 120 kMaxDefaultMemoryLimit / 8 |
| 121 : kMaxDefaultMemoryLimit)), | 121 : kMaxDefaultMemoryLimit)), |
| 122 bytes_allocated_(0), | 122 bytes_allocated_(0), |
| 123 memory_pressure_listener_(new base::MemoryPressureListener( | 123 memory_pressure_listener_(new base::MemoryPressureListener( |
| 124 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, | 124 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, |
| 125 base::Unretained(this)))), | 125 base::Unretained(this)))), |
| 126 // Current thread might not have a task runner in tests. |
| 127 enforce_memory_policy_task_runner_( |
| 128 base::ThreadTaskRunnerHandle::IsSet() |
| 129 ? base::ThreadTaskRunnerHandle::Get() |
| 130 : nullptr), |
| 126 enforce_memory_policy_pending_(false), | 131 enforce_memory_policy_pending_(false), |
| 127 weak_ptr_factory_(this) { | 132 weak_ptr_factory_(this) { |
| 128 DCHECK_NE(memory_limit_, 0u); | 133 DCHECK_NE(memory_limit_, 0u); |
| 134 enforce_memory_policy_callback_ = |
| 135 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, |
| 136 weak_ptr_factory_.GetWeakPtr()); |
| 129 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( | 137 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
| 130 this); | 138 this); |
| 131 } | 139 } |
| 132 | 140 |
| 133 HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() { | 141 HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() { |
| 134 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( | 142 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
| 135 this); | 143 this); |
| 136 } | 144 } |
| 137 | 145 |
| 138 HostDiscardableSharedMemoryManager* | 146 HostDiscardableSharedMemoryManager* |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 return base::Time::Now(); | 487 return base::Time::Now(); |
| 480 } | 488 } |
| 481 | 489 |
| 482 void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() { | 490 void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() { |
| 483 lock_.AssertAcquired(); | 491 lock_.AssertAcquired(); |
| 484 | 492 |
| 485 if (enforce_memory_policy_pending_) | 493 if (enforce_memory_policy_pending_) |
| 486 return; | 494 return; |
| 487 | 495 |
| 488 enforce_memory_policy_pending_ = true; | 496 enforce_memory_policy_pending_ = true; |
| 489 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 497 DCHECK(enforce_memory_policy_task_runner_); |
| 490 FROM_HERE, | 498 enforce_memory_policy_task_runner_->PostDelayedTask( |
| 491 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, | 499 FROM_HERE, enforce_memory_policy_callback_, |
| 492 weak_ptr_factory_.GetWeakPtr()), | |
| 493 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); | 500 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); |
| 494 } | 501 } |
| 495 | 502 |
| 496 } // namespace content | 503 } // namespace content |
| OLD | NEW |