我的完整C MATE applet可以在github上找到:https://github.com/geniass/mate-resource-applet/tree/cmake(BRANCH CMAKE)。现在这是个烂摊子,所以请看下面的代码。
我找不到一个小程序来显示我的电脑的免费内存,所以基本上就是这样。我正在使用sysinfo来获取这些信息,它对我系统的总ram(大约4GB,显示3954 MB)工作正常。 htop显示3157 MB使用的3954 MB。
然而,sysinfo给出的免费ram(136 MB)的值显然是错误的(如果ram是ram尚未分配的东西,我不知道)。
This question是同样的问题,但涉及mem_unit的解决方案不起作用,因为我的系统上的mem_unit = 1。
这是一个提供相同值的最小程序:
#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
这里发生了什么? freeram不是我认为的吗?
答案 0 :(得分:1)
当不使用 free 内存时,Linux不喜欢。因此,当有可用内存时,它会暂时将其作为 cache 内存和缓冲区。 可用内存似乎非常低,但只要程序需要内存,Linux就会减少其缓存/缓冲区使用量,并为程序提供所需内容。
Linux命令free -m
显示内存,缓存和缓冲区的状态。
请参阅this link以获取示例和详细信息。