| Index: base/win/memory_pressure_monitor.h
|
| diff --git a/base/win/memory_pressure_monitor.h b/base/win/memory_pressure_monitor.h
|
| deleted file mode 100644
|
| index 933d91290f113befc56f607641b7d7f60495d690..0000000000000000000000000000000000000000
|
| --- a/base/win/memory_pressure_monitor.h
|
| +++ /dev/null
|
| @@ -1,144 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef BASE_WIN_MEMORY_PRESSURE_MONITOR_H_
|
| -#define BASE_WIN_MEMORY_PRESSURE_MONITOR_H_
|
| -
|
| -#include "base/base_export.h"
|
| -#include "base/memory/memory_pressure_listener.h"
|
| -#include "base/memory/memory_pressure_monitor.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/threading/thread_checker.h"
|
| -#include "base/timer/timer.h"
|
| -
|
| -// To not pull in windows.h.
|
| -typedef struct _MEMORYSTATUSEX MEMORYSTATUSEX;
|
| -
|
| -namespace base {
|
| -namespace win {
|
| -
|
| -// Windows memory pressure monitor. Because there is no OS provided signal this
|
| -// polls at a low frequency (once per second), and applies internal hysteresis.
|
| -class BASE_EXPORT MemoryPressureMonitor : public base::MemoryPressureMonitor {
|
| - public:
|
| - // Constants governing the polling and hysteresis behaviour of the observer.
|
| -
|
| - // The polling interval, in milliseconds. While under critical pressure, this
|
| - // is also the timer to repeat cleanup attempts.
|
| - static const int kPollingIntervalMs;
|
| - // The time which should pass between 2 successive moderate memory pressure
|
| - // signals, in milliseconds.
|
| - static const int kModeratePressureCooldownMs;
|
| - // The number of cycles that should pass between 2 successive moderate memory
|
| - // pressure signals.
|
| - static const int kModeratePressureCooldownCycles;
|
| -
|
| - // Constants governing the memory pressure level detection.
|
| -
|
| - // The amount of total system memory beyond which a system is considered to be
|
| - // a large-memory system.
|
| - static const int kLargeMemoryThresholdMb;
|
| - // Default minimum free memory thresholds for small-memory systems, in MB.
|
| - static const int kSmallMemoryDefaultModerateThresholdMb;
|
| - static const int kSmallMemoryDefaultCriticalThresholdMb;
|
| - // Default minimum free memory thresholds for large-memory systems, in MB.
|
| - static const int kLargeMemoryDefaultModerateThresholdMb;
|
| - static const int kLargeMemoryDefaultCriticalThresholdMb;
|
| -
|
| - // Default constructor. Will choose thresholds automatically basd on the
|
| - // actual amount of system memory.
|
| - MemoryPressureMonitor();
|
| -
|
| - // Constructor with explicit memory thresholds. These represent the amount of
|
| - // free memory below which the applicable memory pressure state engages.
|
| - MemoryPressureMonitor(int moderate_threshold_mb, int critical_threshold_mb);
|
| -
|
| - ~MemoryPressureMonitor() override;
|
| -
|
| - // Schedules a memory pressure check to run soon. This must be called on the
|
| - // same thread where the monitor was instantiated.
|
| - void CheckMemoryPressureSoon();
|
| -
|
| - // Get the current memory pressure level. This can be called from any thread.
|
| - MemoryPressureLevel GetCurrentPressureLevel() const override;
|
| -
|
| - // Returns the moderate pressure level free memory threshold, in MB.
|
| - int moderate_threshold_mb() const { return moderate_threshold_mb_; }
|
| -
|
| - // Returns the critical pressure level free memory threshold, in MB.
|
| - int critical_threshold_mb() const { return critical_threshold_mb_; }
|
| -
|
| - protected:
|
| - // Internals are exposed for unittests.
|
| -
|
| - // Automatically infers threshold values based on system memory. This invokes
|
| - // GetMemoryStatus so it can be mocked in unittests.
|
| - void InferThresholds();
|
| -
|
| - // Starts observing the memory fill level. Calls to StartObserving should
|
| - // always be matched with calls to StopObserving.
|
| - void StartObserving();
|
| -
|
| - // Stop observing the memory fill level. May be safely called if
|
| - // StartObserving has not been called. Must be called from the same thread on
|
| - // which the monitor was instantiated.
|
| - void StopObserving();
|
| -
|
| - // Checks memory pressure, storing the current level, applying any hysteresis
|
| - // and emitting memory pressure level change signals as necessary. This
|
| - // function is called periodically while the monitor is observing memory
|
| - // pressure. This is split out from CheckMemoryPressureAndRecordStatistics so
|
| - // that it may be called by CheckMemoryPressureSoon and not invoke UMA
|
| - // logging. Must be called from the same thread on which the monitor was
|
| - // instantiated.
|
| - void CheckMemoryPressure();
|
| -
|
| - // Wrapper to CheckMemoryPressure that also records the observed memory
|
| - // pressure level via an UMA enumeration. This is the function that is called
|
| - // periodically by the timer. Must be called from the same thread on which the
|
| - // monitor was instantiated.
|
| - void CheckMemoryPressureAndRecordStatistics();
|
| -
|
| - // Calculates the current instantaneous memory pressure level. This does not
|
| - // use any hysteresis and simply returns the result at the current moment. Can
|
| - // be called on any thread.
|
| - MemoryPressureLevel CalculateCurrentPressureLevel();
|
| -
|
| - // Gets system memory status. This is virtual as a unittesting hook. Returns
|
| - // true if the system call succeeds, false otherwise. Can be called on any
|
| - // thread.
|
| - virtual bool GetSystemMemoryStatus(MEMORYSTATUSEX* mem_status);
|
| -
|
| - private:
|
| - // Threshold amounts of available memory that trigger pressure levels. See
|
| - // memory_pressure_monitor.cc for a discussion of reasonable values for these.
|
| - int moderate_threshold_mb_;
|
| - int critical_threshold_mb_;
|
| -
|
| - // A periodic timer to check for memory pressure changes.
|
| - base::RepeatingTimer<MemoryPressureMonitor> timer_;
|
| -
|
| - // The current memory pressure.
|
| - MemoryPressureLevel current_memory_pressure_level_;
|
| -
|
| - // To slow down the amount of moderate pressure event calls, this gets used to
|
| - // count the number of events since the last event occured. This is used by
|
| - // |CheckMemoryPressure| to apply hysteresis on the raw results of
|
| - // |CalculateCurrentPressureLevel|.
|
| - int moderate_pressure_repeat_count_;
|
| -
|
| - // Ensures that this object is used from a single thread.
|
| - base::ThreadChecker thread_checker_;
|
| -
|
| - // Weak pointer factory to ourself used for scheduling calls to
|
| - // CheckMemoryPressure/CheckMemoryPressureAndRecordStatistics via |timer_|.
|
| - base::WeakPtrFactory<MemoryPressureMonitor> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor);
|
| -};
|
| -
|
| -} // namespace win
|
| -} // namespace base
|
| -
|
| -#endif // BASE_WIN_MEMORY_PRESSURE_MONITOR_H_
|
|
|