1

私の完全なCMATEアプレットは、githubのhttps://github.com/geniass/mate-resource-applet/tree/cmake(BRANCH CMAKE)にあります。今はハッキーな混乱なので、以下のコードを参照してください。

コンピュータの空きRAMを表示するアプレットが見つからなかったので、基本的にはこれが何であるかです。私はこの情報を取得するためにsysinfoを使用していますが、システムの合計RAM(約4GB、3954 MBを示しています)に対しては正常に機能します。htopは、3954MBのうち3157MBが使用されていることを示しています。

ただし、sysinfoが無料のRAM(136 MB)に与える値は明らかに間違っています(無料のRAMが割り当てられていないRAMか何かである場合、私にはわかりません)。

この質問は同じ問題ですが、私のシステムではmem_unit = 1であるため、mem_unitを含む解決策は機能しません。

同じ値を与える最小限のプログラムは次のとおりです。

#include <stdio.h>
#include <sys/sysinfo.h>


int main() {
    /* Conversion constants. */
    const long minute = 60;
    const long hour = minute * 60;
    const long day = hour * 24;
    const double megabyte = 1024 * 1024;
    /* Obtain system statistics. */
    struct sysinfo si;
    sysinfo (&si);
    /* Summarize interesting values. */
    printf ("system uptime : %ld days, %ld:%02ld:%02ld\n", 
            si.uptime / day, (si.uptime % day) / hour, 
            (si.uptime % hour) / minute, si.uptime % minute);
    printf ("total RAM   : %5.1f MB\n", si.totalram / megabyte);
    printf ("free RAM   : %5.1f MB\n", si.freeram / megabyte);
    printf ("mem_unit:   : %u\n", si.mem_unit);
    printf ("process count : %d\n", si.procs);
    return 0;
}

出力:

system uptime : 0 days, 10:25:18
total RAM   : 3953.9 MB
free RAM   : 162.1 MB
mem_unit:   : 1
process count : 531

何が起きてる?フリーラムは私が思っているものではありませんか?

4

1 に答える 1

1

Linux は、空きメモリがどこにも使用されていないことを好みません。そのため、使用可能な空きメモリがある場合は、一時的にキャッシュメモリおよびバッファとして使用します。空きメモリが非常に少ないように見えますが、プログラムがメモリを必要とするとすぐに、Linux はキャッシュ/バッファの使用を減らし、プログラムが必要とするものを提供します。

Linux コマンドfree -mは、メモリ、キャッシュ、およびバッファの状態を表示します。

例と詳細情報については、このリンクを参照してください。

于 2013-01-16T08:36:47.187 に答える