linux中确切的总内存使用量,等于系统监视器

时间:2013-11-03 06:37:07

标签: c linux

通过从“/ proc / meminfo”获取Memtotal和Memfree值并减去它们,我们必须在Linux中获得Used Memory。我访问过的大多数线程和网页都引导了这种方法来计算Linux中的总内存使用量。但是通过实现这个方法,我得到了与GNOME系统监视器不同的结果!我的结果大于(大约两倍)。那么GNOME系统监视器使用的方法是什么?

1 个答案:

答案 0 :(得分:1)

GNOME system monitor使用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);