我的内存已满,但进程列表是空的

我的内存已满,但进程列表是空的

问题

我的内存已满,但进程列表中没有重型程序!


用法:

总内存为 4GB,但只有 400MB 可用:

参见使用截图


监控方式htop

%MEM按-> 重型程序排序时仅使用 1% 的内存!

哪个进程占用了我的内存?

参见 htop 屏幕截图

答案1

我的内存已满,但进程列表中没有重型程序!

这是因为内存中充满了文件系统元数据(又名“缓冲区”)和内核缓存的文件内容(又名“缓存”)。

由于程序/用户通常在短时间内多次访问这些类型的资源,并且不使用内存是一种浪费,因此内核会缓存它们,以便比从磁盘再次读取它们更快地访问它们。

缓存数据的确切数量在第 5 列和第 6 列报告:

             已使用的、可用的、缓存的共享缓冲区总数
内存:3838 2895 942 120        461,947
-/+ 缓冲区/缓存:1487 2350
交换:4394 615 3779

由于如果其他操作需要使用内存,缓存数据可能会立即被删除,因此缓存数据实际上并不是已采取并且实际上可供程序使用。

第三行报告了“实际”(缓冲区/缓存数据的净值)使用/可用的内存(“-/+ 缓冲区/缓存:”):

             已使用的、可用的、缓存的共享缓冲区总数
内存:3838 2895 942 120 461 947
-/+ 缓冲区/缓存:       1487 2350
交换:4394 615 3779

为了方便起见,您可以添加几个别名以仅打印“实际”使用/可用的内存~/.bashrc

alias real_used="free -m | awk 'NR==3{print $3}'"
alias realf_free="free -m | awk 'NR==3{print $4}'"

相关内容