在Linux系统中,VSZ(Virtual Memory Size,虚拟内存大小)是一个关键的内存管理指标,以下是详细说明:
malloc()
申请但未写入的堆空间)。/usr/bin/bash
)。malloc
)。libc.so
)。mmap()
映射的文件或设备。指标 | 全称 | 含义 | 特点 |
---|---|---|---|
VSZ | Virtual Set Size | 进程可访问的全部虚拟内存 | 包含未实际使用的预留空间 |
RSS | Resident Set Size | 进程实际驻留在物理内存的部分 | ≤ VSZ,不包含交换到Swap的空间 |
ps
命令ps aux | grep <进程名>
输出列中的 VSZ
显示虚拟内存大小(默认单位为KB):
USER PID %CPU %MEM VSZ RSS TTY COMMAND
root 123 0.5 1.2 500000 30000 pts/0 nginx
(此处VSZ=500000KB
)
top
或 htop
top
中按 F
键,选择 VIRT
(即VSZ)列显示。htop
默认显示 VIRT
列。libc.so
被多个进程共享,物理内存中仅存一份,但每个进程的VSZ会包含其完整大小。mmap()
映射的大文件计入VSZ,但仅加载部分到物理内存。ulimit -v
可限制进程的VSZ上限。pmap
命令:查看进程详细的虚拟内存分布:
pmap -x <PID>
输出示例:
Address Kbytes RSS Mode Mapping
00400000 1024 512 r-x-- /usr/bin/bash
7f2a00000000 8192 0 ----- [anon]
Swap影响:VSZ包含已交换到磁盘的内存,但RSS不包含。
通过理解VSZ,可以更全面地分析进程的内存使用情况,尤其在处理复杂应用或服务器性能调优时非常有用。