测试程序a.c
#include<stdio.h>#include<stdlib.h>#include<unistd.h>int main(){void *p = malloc(1024*1024*1024);char c = getchar();free(p);return 0;}
编译
gcc a.c
运行
a.out
查看进程id
yeqiang@yeqiang-PC:/tmp$ ps aux | grep ./a.out$yeqiang 25452 0.0 0.0 1050860 740 pts/7 S+ 11:01 0:00 ./a.out
其中ps aux字段说明
USER PID %CPU %MEM VSZ RSS TTYSTAT START TIME COMMAND
VSZ=1050860
采用pmap查看进程内存情况
yeqiang@yeqiang-PC:/tmp$ pmap 2545225452: ./a.out00000000004000004K r---- a.out00000000004010004K r-x-- a.out00000000004020004K r---- a.out00000000004030004K r---- a.out00000000004040004K rw--- a.out0000000001877000 132K rw--- [ anon ]00007f92c24e0000 1048580K rw--- [ anon ]00007f93024e1000 136K r---- libc-2.28.so00007f9302503000 1312K r-x-- libc-2.28.so00007f930264b000 304K r---- libc-2.28.so00007f93026970004K ----- libc-2.28.so00007f930269800016K r---- libc-2.28.so00007f930269c0008K rw--- libc-2.28.so00007f930269e00024K rw--- [ anon ]00007f93026cc0004K r---- ld-2.28.so00007f93026cd000 120K r-x-- ld-2.28.so00007f93026eb00032K r---- ld-2.28.so00007f93026f30004K r---- ld-2.28.so00007f93026f40004K rw--- ld-2.28.so00007f93026f50004K rw--- [ anon ]00007fff413cd000 132K rw--- [ stack ]00007fff413f700016K r---- [ anon ]00007fff413fb0008K r-x-- [ anon ]ffffffffff6000004K --x-- [ anon ]total1050864K
其中
00007f92c24e0000 1048580K rw--- [ anon ]
计算
yeqiang@yeqiang-PC:/tmp$ echo 1048580/1024 | bc1024
即1024MB,与void *p = malloc(1024*1024*1024);一致。
共计消耗total1050864K 与ps aux 结果 VSZ=1050860 相当。