内存管理
May 8, 2024About 1 min
内存管理
虚拟内存. 共享内存. 常驻内存
top 命令可以看到如下参数
VIRT:
进程“需要的”虚拟内存大小,包括进程使用的库. 代码. 数据,以及malloc. new分配的堆空间和分配的栈空间等;
假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。
VIRT = SWAP + RES
RES:
进程当前使用的内存大小,包括使用中的malloc. new分配的堆空间和分配的栈空间,但不包括swap out量;
包含其他进程的共享;
如果申请10MB的内存,实际使用1MB,它只增长1MB,与VIRT相反;
关于库占用内存的情况,它只统计加载的库文件所占内存大小。
RES = CODE + DATA
SHR:
除了自身进程的共享内存,也包括其他进程的共享内存;
虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;
计算某个进程所占的物理内存大小公式:RES – SHR;
swap out后,它将会降下来。
DATA
- 数据占用的内存。如果top没有显示,按f键可以显示出来。
- 真正的该程序要求的数据空间,是真正在运行中要使用的。