在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 或 htoptop中按 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,可以更全面地分析进程的内存使用情况,尤其在处理复杂应用或服务器性能调优时非常有用。