Ubuntu:无法将 free -lh 输出与 top 命令输出相关联

Ubuntu:无法将 free -lh 输出与 top 命令输出相关联

我正在使用 free -lh 命令检查我的内存使用情况,它显示了以下结果。

             total       used       free     shared    buffers     cached
Mem:           62G        29G        33G       278M       335M        19G
Low:           62G        29G        33G
High:           0B         0B         0B
-/+ buffers/cache:       9.1G        53G
Swap:          15G         0B        15G

正如我所看到的,已用内存为 29GB,可用内存为 33GB,但当我检查相同的 usingtop命令时,它会显示以下输出。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
23555 glassfi+  20   0 19.896g  5.270g  55092 S   0.0  8.4 121:16.24 java
 2457 hg+       20   0 20.294g  981344  20588 S   0.0  1.5   6:00.18 java
 2615 hg+       20   0 20.294g  950520  20560 S   0.0  1.4   0:22.18 java
 1992 tomcat6   20   0 5783768  518860  20976 S   0.0  0.8   8:05.15 java
.................................................

从上面的结果我可以看到 glassfish 使用 19GB RAM,hg+ 使用 20GB RAM,这意味着使用了超过 39GB RAM。

我的问题是为什么 free -lh 命令显示仅使用 29GB RAM

答案1

“VIRT”列显示进程有多少内存已分配,而不是他们实际使用了多少。进程可以分配比它们使用的更多的内存;对于倾向于分配大堆但不一定使用所有内容的 Java 进程来说尤其如此。 “RES”列显示了他们使用了多少空间:进程使用了​​ 5GiB 以上glassfish,每个进程使用了​​不到 1GiB hg

相关内容