Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2627)

Unified Diff: base/memory/memory_pressure_monitor_win.h

Issue 1250093006: Added memory pressure monitor for linux. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Uncomment ::Get functionality Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/memory/memory_pressure_monitor_mac_unittest.cc ('k') | base/memory/memory_pressure_monitor_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/memory_pressure_monitor_win.h
diff --git a/base/memory/memory_pressure_monitor_win.h b/base/memory/memory_pressure_monitor_win.h
deleted file mode 100644
index 07f04eb893ebdb87a736b1daf31f1f93fcb4af05..0000000000000000000000000000000000000000
--- a/base/memory/memory_pressure_monitor_win.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_MEMORY_MEMORY_PRESSURE_MONITOR_WIN_H_
-#define BASE_MEMORY_MEMORY_PRESSURE_MONITOR_WIN_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_MEMORY_MEMORY_PRESSURE_MONITOR_WIN_H_
« no previous file with comments | « base/memory/memory_pressure_monitor_mac_unittest.cc ('k') | base/memory/memory_pressure_monitor_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698