接口
GioMemoryMonitor
自 2.64以来
描述 [src]
interface Gio.MemoryMonitor : Gio.Initable
GMemoryMonitor
会监控系统内存,并在应用占用更多空间时建议释放内存。它是在Linux上使用 Low Memory Monitor (API 文档) 实现的。
同样也有在Flatpak 沙盒中使用的实现。
当接收到信号时可能采取的操作包括
- 清理缓存
- 将一段时间未查看的文件保存到磁盘,以便在必要时重新打开
- 进行垃圾回收周期
- 尝试压缩碎片化的分配
- 如果程序没有理由继续运行,则在空闲时退出
- 调用
malloc_trim(3)
将缓存的堆页面归还给内核(如果您的 libc支持)
注意,一些操作可能并不总能提高系统性能,因此应该在您的应用程序中进行基准测试。例如,malloc_trim()
可能会使得未来的堆分配变慢(由于释放缓存的堆页面返回给内核)。
有关不同警告级别的详细信息,请参阅 GMemoryMonitorWarningLevel
。
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;
}
不要忘记在退出时断开 GMemoryMonitor::low-memory-warning
信号,并取消引用 GMemoryMonitor
本身。
自 2.64以来可用
先决条件
为了实现MemoryMonitor,您的类型必须从GInitable
派生。
信号
Giov.MemoryMonitor::low-memory-warning
当系统内存不足时发出。信号处理器应随后采取相应动作,具体取决于警告级别。有关详细信息,请参阅GMemoryMonitorWarningLevel
文档。
自 2.64以来
接口结构
struct GioMemoryMonitorInterface {
void (* low_memory_warning) (
GMemoryMonitor* monitor,
GMemoryMonitorWarningLevel level
);
}
GMemoryMonitor
的虚拟函数表。
接口成员
low_memory_warning |
|
|