当前位置: 技术问答>linux和unix
linux怎么看某个进程有没有内存泄露啊?
来源: 互联网 发布时间:2016-11-03
本文导语: 我用ps -F -p 进程号 持续查看进程情况,数小时。 输出两个列中SZ好像一直保持不变,但是RSS列的值一直增大,这个说明程序有内存泄露吗? | 试试 valgrind ./a.out 这个 valgrind 是系统自...
我用ps -F -p 进程号 持续查看进程情况,数小时。
输出两个列中SZ好像一直保持不变,但是RSS列的值一直增大,这个说明程序有内存泄露吗?
输出两个列中SZ好像一直保持不变,但是RSS列的值一直增大,这个说明程序有内存泄露吗?
|
试试 valgrind ./a.out
这个 valgrind 是系统自带的命令
valgrind
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。Valgrind这个名字取自北欧神话中英灵殿的入口。
Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。
Valgrind遵守GNU通用公共许可证条款,是一款自由软件。
到3.3.0版本为止,Valgrind支持x86、x86-64以及PowerPC上的Linux。除此之外,还有一些其它非正式支持的类Unix平台(如FreeBSD、NetBSD以及Mac OS X)。
这个 valgrind 是系统自带的命令
valgrind
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。Valgrind这个名字取自北欧神话中英灵殿的入口。
Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。
Valgrind遵守GNU通用公共许可证条款,是一款自由软件。
到3.3.0版本为止,Valgrind支持x86、x86-64以及PowerPC上的Linux。除此之外,还有一些其它非正式支持的类Unix平台(如FreeBSD、NetBSD以及Mac OS X)。
|
不一定,有些程序在运行时要动态申请和释放内存
|
可以通过/proc/进程号/status 中的VmSize查看内存的变化,还有free命令
可以写个定时任务,定时将status保存到某个文件中,运行一段时间。
PID=`ps -ef |grep 程序名 |sed -n '2p' |awk '{print $2}'`
free >> $DIR/memory.log
echo "-----/proc/$PID/status-------">>$DIR/memory.log
定时任务可以在crontab中设置每分钟统计一次。
可以写个定时任务,定时将status保存到某个文件中,运行一段时间。
PID=`ps -ef |grep 程序名 |sed -n '2p' |awk '{print $2}'`
free >> $DIR/memory.log
echo "-----/proc/$PID/status-------">>$DIR/memory.log
定时任务可以在crontab中设置每分钟统计一次。