物理内存 总量 已用 剩余 缓存,主要用于目录方面,inode值等
Mem: 2888480k total, 2830188k used, 58292k free, 12244k buffers
虚拟内存 总量 已用 剩余 物理内存的缓存,用于已打开的文件
Swap: 1048572k total, 1332k used, 1047240k free, 1285456k cached
total=used+free
used=buffers+cached (maybe add shared also)
缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,用下面的命令可以释放Cache Memory:
## To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
## To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
## To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
然后再来看看进程的具体内存占用:
PID USER PR NI VIRT RES SHR S [%CPU] %MEM TIME+ ARGS
871 system 18 -2 4.3G 228M 183M S 34.4 8.0 0:50.11 system_server
VIRT:virtual memory usage 虚拟内存
1、进程虚拟内存大小,包括进程使用的库、代码、数据等。VIRT = SWAP + RES
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out。RES = CODE + DATA
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。(android系统不行)
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
网友评论