下面是 Ubuntu 中 free 的输出:
$ free
total used free shared buffers cached
Mem: 8173180 8013092 160088 0 1076276 3091136
-/+ buffers/cache: 3845680 4327500
Swap: 11719380 312 11719068
总物理内存为 8 GB。已使用的总内存接近该值,但缓冲区高速缓存使用的总内存是该值的一半,大约为 4 GB。几乎没有任何内存被用作交换。
现在派生了缓冲区缓存,因为我们已经对磁盘进行了读/写,然后在第一次之后,应用程序被加载到内存中,直到不再需要加速读/写。因此磁盘缓冲的读/写总量为 4 GB。
好的,但是什么样的进程正在使用其他 4 GB 物理内存(不包括缓冲区高速缓存)?我怎样才能确定这一点?
答案1
剩余内存用于系统上运行的各种程序的堆和堆栈。正如 Joel Davis 在他的评论中所说,您可以使用gnome-system-monitor
或ps
(尽管您想要rss
代替vsize
)来查看哪些程序正在使用它。您还可以使用top
命令行工具,它默认按 CPU 使用率排序。输入后M,它将切换到按内存使用情况排序。
另外,我想纠正一个误解:交换不使用记忆。 312 并不意味着 312KB RAM 用于交换。这实际上意味着使用 312 KB 的交换来代替 RAM。如果您的计算机耗尽 RAM,它将开始将内存内容写入磁盘(“分页”)以释放 RAM。该交换数字告诉您有多少 RAM 已写入磁盘。