Tag Archives: top

top命令显示的VIRT列详解

在Linux下使用top命令查看进程时,经常可以发现Java应用的虚拟内存(即VIRT这一列)占用很高,如下:

PID   USER   PR   NI   VIRT     RES     SHR    S   %CPU  %MEM TIME+    COMMAND
5626  admin  20   0     9009m  496m   7072   S     1.8        6.3        355:00.79     java

这个VIRT代表啥意思呢?昨天看过StackOverFlow一条问题的解释后,这块算是彻底弄明白了。
上面的几列中,RES表示进程实际使用的内存,如果这个值很大则表示使用了大量实际内存,需要引起注意。
而VIRT的具体解释如下:
The total amount of virtual memory used by the task. It includes all code,data and shared libraries plus pages that have been swapped out.
这段解释的意思是VIRT表示进程所有使用过的代码,数据,共享库等等,这其中的许多数据或许已经从内存交换到硬盘上面,很少使用了。
使用pmap pid 可以显示出这个进程曾经使用过的虚拟内存映射。rwx–表示一般的数据空间,r-x–表示常驻磁盘的数据。
具体pmap的详细解释还是得翻看一下man文档。