2024 December 25 htop
htop
名称含义
- PID: 进程ID
- USER: 进程所有者
- PR: 进程的优先级别。数字越低优先级越高。
- NI: 进程的优先级别数值。
- VIRT: 进程的虚拟大小,即实际使用的内存、映射到自身的内存(例如 X 服务器的显卡 RAM)、映射到磁盘上的文件(最明显的是共享库) 以及与其他进程共享的内存的总和。VIRT 表示程序当前能够访问的内存大小。
- RES: 常驻内存大小,它准确地表示了一个进程实际消耗了多少物理内存。(这也与 %MEM 列直接对应)。
- SHR: 进程使用的共享内存。表示 VIRT 大小中有多少是可共享内存或库。就库而言,这并不一定意味着整个库都是驻留的。例如,如果程序只使用了库中的几个函数,那么整个库都被映射了,并将计入 VIRT 和 SHR,但只有库文件中包含被使用函数的部分才会被实际加载并计入 RES。
- S: 进程的当前状态(zombied-僵尸、sleeping-睡眠、running-运行、uninterruptedly sleeping-不间断睡眠、traced跟踪)。
- %CPU: 进程占用的CPU使用率
- %MEM: 进程占用的物理内存和总内存的百分比
- TIME+: 进程启动后占用的总的CPU时间
- COMMAND: 进程启动的启动命令名称
VIRT、RES和SHR的区别
VIRT
- 进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;
- 如果进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量;
RES
- 进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
- 包含其他进程的共享;
- 如果申请10MB的内存,实际使用1MB,它只增长1MB;
SHR
- 除了自身进程的共享内存,也包括其他进程的共享内存;
- 虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;
- 计算某个进程所占的物理内存大小公式:RES – SHR;
- swap out后,它将会降下来。