linux下的内存查看

今天看书看到一句话:Serious user application programs nowadays can easily run from 50 to 200MB and more.意思是说现在的程序轻易的就可以占用50到200MB的内存。然后有点好奇,程序在内存中是什么样子呢?除了必要的代码和堆栈还有什么呢?

下面是自己的一些尝试。

首先是top命令

top -p 1


其中,VIRT是进程1虚拟内存(VIRT)的大小(实际需要的内存容量?),为48428KB(约50MB),实际占用的内存(RES, resident的缩写)为5612KB(约5MB),共享内存(SHR)为3720KB(约3MB)。

然后再看一下ps命令

ps -u -p 1

这个不用说了,没显示共享内存,但虚拟内存与实际内存与top中都是一致的。

还有一个专门看内存命令的pmap

pmap -d 1

1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 23
Address           Kbytes Mode  Offset           Device    Mapping
00007fb4e5788000      44 r-x-- 0000000000000000 0fd:00000 libnss_files-2.18.so
00007fb4e5793000    2044 ----- 000000000000b000 0fd:00000 libnss_files-2.18.so
00007fb4e5992000       4 r---- 000000000000a000 0fd:00000 libnss_files-2.18.so
00007fb4e5993000       4 rw--- 000000000000b000 0fd:00000 libnss_files-2.18.so
00007fb4e5998000      84 r-x-- 0000000000000000 0fd:00000 libz.so.1.2.8
00007fb4e59ad000    2044 ----- 0000000000015000 0fd:00000 libz.so.1.2.8
...
00007fb4e9cec000     900 rw--- 0000000000000000 000:00000   [ anon ]
00007fffef17f000     132 rw--- 0000000000000000 000:00000   [ stack ]
00007fffef200000       8 r---- 0000000000000000 000:00000   [ anon ]
00007fffef202000       8 r-x-- 0000000000000000 000:00000   [ anon ]
ffffffffff600000       4 r-x-- 0000000000000000 000:00000   [ anon ]
mapped: 48428K    writeable/private: 2580K    shared: 0K
这个mapped依然与之前的命令一致(但把所有数值加起来的结果是48316KB),但实际占有的内存(2580K)和共享内存(0KB),这个貌似就不对了,因为lib*.so通常为多个进程共享的数据,它们占有的内存即可视为共享内存,从上述结果来看共享内存显然不为0。由此可见这个命令貌似查的不准。据说改命令来自sun os,是不是还有点水土不服?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值