接口

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派生。

函数

g_memory_monitor_dup_default

获取系统默认GMemoryMonitor的引用。

自 2.64以来

信号

Giov.MemoryMonitor::low-memory-warning

当系统内存不足时发出。信号处理器应随后采取相应动作,具体取决于警告级别。有关详细信息,请参阅GMemoryMonitorWarningLevel文档。

自 2.64以来

接口结构

struct GioMemoryMonitorInterface {
  void (* low_memory_warning) (
    GMemoryMonitor* monitor,
    GMemoryMonitorWarningLevel level
  );
  
}

GMemoryMonitor 的虚拟函数表。

接口成员
low_memory_warning
void (* low_memory_warning) (
    GMemoryMonitor* monitor,
    GMemoryMonitorWarningLevel level
  )
 

GMemoryMonitor::low-memory-warning 信号的虚拟函数指针。

虚拟方法

Giov.MemoryMonitor.low_memory_warning

GMemoryMonitor::low-memory-warning 信号的虚拟函数指针。