通过从“/proc/meminfo”中获取 Memtotal 和 Memfree 值并减去它们,我们必须得到 Linux 中的 Used Memory。我访问过的大多数线程和网页都通过这种方法来计算 Linux 中的总内存使用量。但是通过实施这种方法,我使用 GNOME 系统监视器得到了不同的结果!我的结果大于(大约两倍)。那么 GNOME System Monitor 使用的方法是什么?
问问题
582 次
1 回答
1
GNOME 系统监视器用于libgtop
检索各种平台的内存信息。对于 Linux,它使用sysdeps/linux/mem.c
2,其中例程如下:
像“MemTotal”这样的字符串是/proc/meminfo
.
…
buf->total = get_scaled(buffer, "MemTotal:");
buf->free = get_scaled(buffer, "MemFree:");
buf->used = buf->total - buf->free;
buf->shared = 0;
buf->buffer = get_scaled(buffer, "Buffers:");
buf->cached = get_scaled(buffer, "Cached:");
buf->user = buf->total - buf->free - buf->cached - buf->buffer;
应用程序中报告的内存是buf->user
. 更准确地说,在src/load-graph.cpp
1中:
mempercent = (float)mem.user / (float)mem.total;
set_memory_label_and_picker(GTK_LABEL(graph->labels.memory),
GSM_COLOR_BUTTON(graph->mem_color_picker),
mem.user, mem.total, mempercent);
于 2013-11-03T23:30:01.107 回答