top 命令中的VIRT,RES,SHR ,MEM区别

VIRT 表示进程的虚拟(地址)空间大小,其包含进程实际使用的大小(申请的堆栈), 使用mmap映射的大小,包括外设RAM, 还有映射到本进程的文件(例如动态库),还有进程间的共享内存。所以VIRT 表示的是当前这个进程能够访问到的所有空间大小

RES 表示进程的常驻内存大小,准确表示当前有多少物理内存被这个进程消费,这个和MEM是对应的, 这个大小永远要比VIRT小,因为程序大部分使用到c库

SHR 表示多少VIRT 实际可以共享的(包括内存和动态库),举例动态库,SHR的值不总代表整个库都是常驻内存的,因为有些程序使用到c库的部分函数,但整个库是被映射到进程的,并且计算到VIRT和SHR,但是只有该库的一部分被使用到,即被装载并记入到RES

原文地址:https://www.cnblogs.com/hustcpp/p/11097646.html