Module: Gio::MemoryMonitor
- Defined in:
- (unknown)
Overview
GMemory::Monitor 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](gitlab.freedesktop.org/hadess/low-memory-monitor/) ([API documentation](hadess.pages.freedesktop.org/low-memory-monitor/)).
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
See GMemory::MonitorWarningLevel for details on the various warning levels.
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 GMemory::Monitor::low-memory-warning signal, and unref the GMemory::Monitor itself when exiting.