:right-sidebar: True
MemoryMonitor
===================================================================
.. currentmodule:: gi.repository.Gio
.. versionadded:: 2.64
.. class:: MemoryMonitor(*args, **kwargs)
   :no-contents-entry:
``GMemoryMonitor`` will monitor system memory and suggest to the application
when to free memory so as to leave more room for other applications.
It is implemented on Linux using the
`Low Memory Monitor `__
(`API documentation `__\).
There is also an implementation for use inside Flatpak sandboxes.
Possible actions to take when the signal is received are:
- Free caches
- Save files that haven’t been looked at in a while to disk, ready to be reopened when needed
- Run a garbage collection cycle
- Try and compress fragmented allocations
- Exit on idle if the process has no reason to stay around
- Call ```malloc_trim(3)`` `__ to return cached heap pages to
   the kernel (if supported by your libc)
Note that some actions may not always improve system performance, and so
should be profiled for your application. ``malloc_trim()``\, for example, may
make future heap allocations slower (due to releasing cached heap pages back
to the kernel).
See :obj:`~gi.repository.Gio.MemoryMonitorWarningLevel` for details on the various warning
levels.
.. code-block:: c
    :dedent:
    static void
    warning_cb (GMemoryMonitor *m, GMemoryMonitorWarningLevel level)
    {
      g_debug ("Warning level: %d", level);
      if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
        drop_caches ();
    }
    static GMemoryMonitor *
    monitor_low_memory (void)
    {
      GMemoryMonitor *m;
      m = g_memory_monitor_dup_default ();
      g_signal_connect (G_OBJECT (m), "low-memory-warning",
                        G_CALLBACK (warning_cb), NULL);
      return m;
    }
Don’t forget to disconnect the :obj:`~gi.repository.Gio.MemoryMonitor.signals.low_memory_warning`
signal, and unref the ``GMemoryMonitor`` itself when exiting.
Methods
-------
.. rst-class:: interim-class
.. class:: MemoryMonitor
   :no-index:
   .. classmethod:: dup_default() -> ~gi.repository.Gio.MemoryMonitor
      Gets a reference to the default :obj:`~gi.repository.Gio.MemoryMonitor` for the system.
      .. versionadded:: 2.64
Signals
-------
.. rst-class:: interim-class
.. class:: MemoryMonitor.signals
   :no-index:
   
   .. method:: low_memory_warning(level: ~gi.repository.Gio.MemoryMonitorWarningLevel) -> None
      The type of the None singleton.
      .. versionadded:: 2.64
      :param level: the :obj:`~gi.repository.Gio.MemoryMonitorWarningLevel` warning level
Virtual Methods
---------------
.. rst-class:: interim-class
.. class:: MemoryMonitor
   :no-index:
   
   .. method:: do_low_memory_warning(level: ~gi.repository.Gio.MemoryMonitorWarningLevel) -> None
      The type of the None singleton.
      :param level: