从联机帮助页top
VIRT -- Virtual Memory Size (KiB)
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 and pages that have been mapped but not used.
USED -- Memory in Use (KiB)
This field represents the non-swapped physical memory a task has
used (RES) plus the non-resident portion of its address space
(SWAP).
在我看来,VIRT和USED的意思是相同的,即它们都是进程在物理内存中占用的内容和在交换中占用的内容的总和。那么它们有什么区别和联系呢?
顺便说一下,默认情况下,top
不显示USED。我怎样才能让它可见?
答案1
RES是进程当前使用的 RAM 量。该值可能会有所不同,因为内存页面可能会被换入或换出。对于已经休眠很长时间的进程(例如未经请求的守护进程),它甚至可能为 0。
虚拟现实技术是进程正在使用的所有内存的完整大小,无论是在 RAM 中还是在磁盘上(共享对象、映射文件、交换区域),因此 VIRT 始终大于或等于 RES。进程总是处理(即分配/访问/释放)虚拟内存。由操作系统将这些页面中的部分或全部映射到 RAM。
用过的小于虚拟现实技术因为它不包括由交换以外的其他东西支持的内存,例如代码和库。
答案2
RES表示当前分配给正在运行的进程的实际内存(物理内存)驻留在内存。
虚拟现实技术显示进程的虚拟内存(分配在硬盘和/或 RAM 上)(如手册页中所述)。
用过的=RES+ 当前不驻留在 RAM 中的可执行文件部分。
ps
显示VIRT
使用vsz
标志。