我应该如何从顶部阅读这些数字? 记忆去了哪里?

我正在看这些数字:

Mem: 3891192k total, 3659276k used, 231916k free, 25640k buffers Swap: 4449924k total, 0k used, 4449924k free, 1237416k cached 

并努力看到所有的3659276k已经走了。 按内存sorting的顶级进程如下所示:

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30228 myuser 25 0 2914m 2.2g 9908 S 13.3 59.6 4:59.05 java 26428 root 25 0 97580 17m 8024 S 0.7 0.5 0:35.89 slapd 2897 root 15 0 6344 3512 1920 S 0.0 0.1 0:01.40 snmpd 2771 haldaemo 18 0 5176 3308 2108 S 0.0 0.1 0:00.11 hald 31370 myuser 15 0 3576 2004 1224 S 0.0 0.1 0:00.01 bash 31367 root 16 0 6404 1932 1572 S 0.0 0.0 0:00.02 sshd 2940 root 15 0 3176 1904 1272 S 0.0 0.0 0:00.15 bash 2735 root 19 0 5800 1576 852 S 0.0 0.0 0:00.00 mount.smbfs 2727 root 17 0 5796 1568 852 S 0.0 0.0 0:00.00 mount.smbfs 2738 root 20 0 5796 1568 852 S 0.0 0.0 0:00.00 mount.smbfs 31369 myuser 15 0 6404 1212 852 R 0.0 0.0 0:00.00 sshd 31380 myuser 15 0 2308 1120 876 R 0.0 0.0 0:00.01 top 2750 root 18 0 3824 1116 820 S 0.0 0.0 0:00.06 sshd 2883 root 15 0 2488 1008 820 S 0.0 0.0 0:13.61 vmware-guestd 2772 root 25 0 2868 992 860 S 0.0 0.0 0:00.00 hald-runner 2783 root 15 0 2920 968 852 S 0.0 0.0 0:00.12 hald-addon-stor 2781 myuser 25 0 2112 900 784 S 0.0 0.0 0:00.00 hald-addon-acpi 

从理论上来说,表中的数字应该与总结中的数字相加吗?

它将被系统caching使用。 如果你运行free命令,你会看到缓冲区/caching使用了什么。 这是不必担心的(这是正常的)。 这只是内核试图有效地使用你的可用内存。

java:59.6%MEM,RES:2.2g

这意味着java占用你内存的60%(实际上是2.2g):你在某些Java应用程序中有内存泄漏。

缓冲区只需要25MiB: