: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: