内存查看的几个方法
cat /proc/{pid}/status
cat /proc/{pid}/maps
cat /proc/meminfo
top
Top命令介绍:
PID :
进程ID
PPID : 父进程ID,1表示init进程,
USER
: 当前用户
STAT :
进程当前运行状态
VSZ :此进程一共占用了多大物理内存。
%MEM
: 此进程占总内存消耗的百分比
%CPU :
此进程占总CPU消耗的百分比
COMMAND : 进程启动时的命令行格式
/proc/meminfo介绍
$cat /proc/meminfo MemTotal: 2052440 kB //总内存
MemFree: 50004 kB //空闲内存
Buffers: 19976 kB //给文件的缓冲大小
Cached: 436412 kB //高速缓冲存储器使用的大小
SwapCached:19864 kB //被高速缓冲存储用的交换空间大小
Active: 1144512 kB //活跃使用中的高速缓冲存储器页面文件大小
Inactive: 732788 kB //不经常使用的高速缓冲存储器页面文件大小
可用的物理内存=memfree+buffers+cached,
当memfree不够时,内核会通过回写机制(pdflush线程)把cached和buffered内存回写到后备存储器,从而释放相关内存供进程使用,或者通过手动方式显式释放cache内存
/proc/{pid}/maps介绍
# cat maps
(1)
(2)(3)
(4)(5)
(6)
00400000-00414000 r-xp
00000000 1f:05 193
/bin/wanManager
代码段
00453000-00454000 rw-p 00013000 1f:05
193
/bin/wanManager
数据段
00454000-0045d000 rwxp 00454000 00:00
0
[heap]
堆
2aaa8000-2aaae000 r-xp 00000000 1f:05
366
/lib/ld-uClibc-0.9.28.so 程序连接的共享库的内存地址
2aaae000-2aaaf000 rw-p
2aaae000 00:00 0
2aaed000-2aaee000 r--p 00005000 1f:05
366
/lib/ld-uClibc-0.9.28.so
2aaee000-2aaef000 rw-p 00006000 1f:05
366
/lib/ld-uClibc-0.9.28.so
2aaef000-2ab4d000 r-xp 00000000 1f:05
319
/lib/libuClibc-0.9.28.so
2ab4d000-2ab8c000 ---p 2ab4d000 00:00 0
2ab8c000-2ab8d000 r--p 0005d000 1f:05
319
/lib/libuClibc-0.9.28.so
2ab8d000-2ab8e000 rw-p 0005e000 1f:05
319
/lib/libuClibc-0.9.28.so
2ab8e000-2ab93000 rw-p 2ab8e000 00:00 0
2ab93000-2ab96000 r-xp 00000000 1f:05
313
/lib/libnvram-0.9.28.so
2ab96000-2abd6000 ---p 2ab96000 00:00 0
2abd6000-2abe4000 rw-p 00003000 1f:05
313
/lib/libnvram-0.9.28.so
2abe4000-2abe8000 r-xp 00000000 1f:05
365
/lib/libcfg.so
2abe8000-2ac28000 ---p 2abe8000 00:00 0
2ac28000-2ac29000
rw-p 00004000 1f:05 365
/lib/libcfg.so
2ac29000-2ac38000 r-xp 00000000 1f:05
310
/lib/libpthread-0.9.28.so
2ac38000-2ac77000 ---p 2ac38000 00:00 0
2ac77000-2ac7c000 rw-p 0000e000 1f:05
310
/lib/libpthread-0.9.28.so
2ac7c000-2ac7e000 rw-p 2ac7c000 00:00
0
线程栈
7ff41000-7ff56000 rwxp 7ff41000 00:00
0
[stack]
(1)内存段的虚拟地址
(2)可执行权限 r w x p_私有 s_公有
(3)在进程地址的偏移量
(4)映像文件主次设备号
(5)映像文件的节点号inode
(6)映像文件的路径
/proc/{pid}/status介绍
VmSize:整个进程使用虚拟内存大小,是VmLib, VmExe, VmData, 和VmStk的总和。
VmLck: 虚拟内存锁。进程当前使用的并且加锁的虚拟内存总数
VmHWM:
表示进程所占用物理内存的峰值
VmRSS: 虚拟内存驻留集合大小。这是驻留在物理内存的一部分。它没有交换到硬盘。它包括代码,数据和栈。
VmData: 虚拟内存数据。堆使用的虚拟内存。
VmStk: 虚拟内存栈 栈使用的虚拟内存
VmExe: 可执行的虚拟内存,
可执行的和静态链接库所使用的虚拟内存
VmLib: 虚拟内存库动态链接库所使用的虚拟内存
原文:http://www.cnblogs.com/zcblogs/p/3645302.html