进入子目录的数组
时间:2011-01-31
来源:互联网
正在写一个python脚本,需要统计子进程的内存用量,我看了几种不同的获取进程内存占用的方法,感觉比较晕。
我用了一个简单的C程序统计内存,没有GCC优化:
方法1,cat /proc/PID/status:
有关内存的输出信息为:
VmPeak: 21040 kB
VmSize: 21040 kB
VmLck: 0 kB
VmHWM: 364 kB
VmRSS: 364 kB
VmData: 16432 kB
VmStk: 1032 kB
VmExe: 4 kB
VmLib: 1496 kB
VmPTE: 28 kB
VmSwap: 0 kB
头两个不清楚具体含义,VmData段应该是程序的数据段,就是全局的s变量,大约16MB,符合预期。VmStk应该是栈,1MB左右,也符合预期。VmExe是代码占用的内存,这么小一个程序,代码不多。
方法2:
ps -fp PID -u,输出结果:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cuihao 8825 0.0 0.0 21040 364 pts/3 S+ 12:02 0:00 ./a.out
VSZ的21040不太理解,网上说是虚拟内存大小,这个虚拟内存应该不是说swap吧。
RSS说是实际开销的物理内存,但只有364KB么?
方法3:
top:
VIRT 21040 RES 364 SHR 288
方法4:
gnome的系统监视器(只是对比一下,写脚本用不了):
内存:80KB 可写内存:80KB 共享内存:288KB 驻留内存:364KB 虚拟内存:20.5MB
究竟程序的内存占用应该怎么计算,这些不同的内存占用之间又有什么关系?望大牛解释。
我用了一个简单的C程序统计内存,没有GCC优化:
引用:
#include <stdio.h>
char s[16*1024*1024];
int main(void)
{
char lo[1024*1024];
getchar();
return 0;
}
char s[16*1024*1024];
int main(void)
{
char lo[1024*1024];
getchar();
return 0;
}
方法1,cat /proc/PID/status:
有关内存的输出信息为:
VmPeak: 21040 kB
VmSize: 21040 kB
VmLck: 0 kB
VmHWM: 364 kB
VmRSS: 364 kB
VmData: 16432 kB
VmStk: 1032 kB
VmExe: 4 kB
VmLib: 1496 kB
VmPTE: 28 kB
VmSwap: 0 kB
头两个不清楚具体含义,VmData段应该是程序的数据段,就是全局的s变量,大约16MB,符合预期。VmStk应该是栈,1MB左右,也符合预期。VmExe是代码占用的内存,这么小一个程序,代码不多。
方法2:
ps -fp PID -u,输出结果:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cuihao 8825 0.0 0.0 21040 364 pts/3 S+ 12:02 0:00 ./a.out
VSZ的21040不太理解,网上说是虚拟内存大小,这个虚拟内存应该不是说swap吧。
RSS说是实际开销的物理内存,但只有364KB么?
方法3:
top:
VIRT 21040 RES 364 SHR 288
方法4:
gnome的系统监视器(只是对比一下,写脚本用不了):
内存:80KB 可写内存:80KB 共享内存:288KB 驻留内存:364KB 虚拟内存:20.5MB
究竟程序的内存占用应该怎么计算,这些不同的内存占用之间又有什么关系?望大牛解释。
作者: cuihao 发布时间: 2011-01-31
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28