繁体   English   中英

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

[英]exact total memory usage in linux that equals to system monitor

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

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM