在Linux系统上,使用" free"时,以下是值:
total used free shared buff/cache available
Mem: 26755612 873224 389320 286944 25493068 25311948
Swap: 0 0 0
总价值,使用价值和免费价值不相加。我期待总数=使用+免费。
问题: 我在这里缺少什么?
答案 0 :(得分:13)
对于主内存,实际内存大小可以计算为 clang -x c++ one.cc -o one.cc.o
clang a.o b.o c.o one.cc.o
或 used+free+buffers+cache
,因为 {{1} } 强>
used+free+buffers/cache
的手册页将 buffers/cache = buffer+cache
突出显示为free
正如免费的手册页所说: -
总计 总安装内存(/ proc / meminfo中的MemTotal和SwapTotal)
使用 已用内存(按总计 - 免费 - 缓冲区 - 缓存计算)
免费 未使用的内存(/ proc / meminfo中的MemFree和SwapFree)
共享 tmpfs使用的内存(主要是)(/ proc / meminfo中的Shmem, 在内核2.6.32上,如果不可用则显示为零)
缓冲区 内核缓冲区使用的内存(/ proc / meminfo中的缓冲区)
缓存 页面缓存和slab使用的内存(Cached和Slab in 的/ proc / meminfo中)
buff / cache 缓冲区和缓存的总和
可用 估算可用于启动新应用程序的内存量,无需交换。与缓存或空闲字段提供的数据不同,此字段考虑了页面缓存,并且由于正在使用的项目,并非所有可回收的内存块都将被回收(MemAvailable在/ proc / meminfo中,在内核3.14上可用,模拟在内核2.6.27+,否则与免费相同)
在你的情况下,
873224(已使用)+ 389320(免费)+ 25493068(buff / cache)= 26755612(总计)
答案 1 :(得分:8)
Linux喜欢缓存它打开的每个文件。每次打开一个文件进行读取时,Linux都会对它进行缓存,但是如果需要内存来处理更重要的内容,它会丢弃这些缓存 - 就像系统上的进程想要分配更多内存一样。内存中的这些缓存只是在一遍又一遍地使用相同文件时使Linux更快。它不是每次想要读取文件时实际进入磁盘,而是从内存中获取它,而内存比磁盘快得多。这就是为什么你的系统显示25493068用于buff /缓存但也显示25311948可用。如果系统需要,可以释放大部分缓存数据。