资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1深圳大学-冯禹洪: yuhongfszu.edu.cnLinux下如何检查内存泄露2深圳大学-冯禹洪: yuhongfszu.edu.cn什么是内存泄露?n 以下说法哪个正确?l应用程序在分配某段内存后,由于程序使用错 误造成物理内存的缺失l应用程序在分配某段内存后,由于设计错误,失 去了对该段内存的控制,因而造成了内存的浪 费3深圳大学-冯禹洪: yuhongfszu.edu.cn什么是内存泄露?n 指的是堆内存的泄露,堆内存是指程序从堆中分配 的,任意大小的使用后必须显式释放的内存l分配: malloc, calloc, realloc, newl释放: free, deleten 由于疏忽或错误造成程序未能释放已经不再使用 的内存的情况4深圳大学-冯禹洪: yuhongfszu.edu.cnLinux下检查内存泄露n 内存泄露的主要表现及其危害l当程序连续运行时,与程序相关的内存(或堆)变 的越来越大l内存泄露会减少可用内存的数量从而降低计算 机的性能l当所消耗的内存达到系统的上限时候,自己会崩 溃,严重者导致系统挂起或崩溃5深圳大学-冯禹洪: yuhongfszu.edu.cn以下程序会发生内存泄露吗? (一)6深圳大学-冯禹洪: yuhongfszu.edu.cn以下程序会发生内存泄露吗? (一)7深圳大学-冯禹洪: yuhongfszu.edu.cn以下程序会发生内存泄露吗? (二)8深圳大学-冯禹洪: yuhongfszu.edu.cn以下程序会发生内存泄露吗? (二)9深圳大学-冯禹洪: yuhongfszu.edu.cn以下程序会发生内存泄露吗? (二)n ps:显示瞬间进程的状态 n 常用参数: l: 长格式输出 u: 按用户名和启动时间的顺序来显示进程 j: 用任务格式来显示进程 f: 用树形格式来显示进程 a: 显示所有用户的所有进程 x: 显示无控制终端的进程 r: 显示运行中的进程 ww: 避免详细参数被截断10深圳大学-冯禹洪: yuhongfszu.edu.cn以下程序会发生内存泄露吗? (二)n ps使用范例$ps /列出当前shell里当前用户的进程$ps u yuhong /列出用户yuhong运行的所有进程$ps el /以详细列表方式显示运行的所有进程$ps aux /以详细的BSD风格显示运行的所有进程%MEM: 占用的内存的使用率 VSZ : 虚拟内存大小,即一个程序完全驻留在内存的话需要占用多 少内存空间 RSS: 当前实际占用了多少内存 STAT: 进程当前状态 11深圳大学-冯禹洪: yuhongfszu.edu.cn进程的状态n TASK_RUNNING(运行)n TASK_INTERRUPTIBLE(可中断)n TASK_UNINTERRUPTIBLE(不可中断)n TASK_ZOMBIE(僵死) n TASK_STOPPED(停止)RSDZTn 后缀 l mtrace();/*要检查是否会有内存泄露的代码段*/muntrace(); l编译运行$gcc o main main.c$export MALLOC_TRACE=./log /用该环境变量来定义一个文件log用于输出$./main$cat log16深圳大学-冯禹洪: yuhongfszu.edu.cnLinux下检查内存泄露n ps aux, topn 静态分析工具 mtracen 动态分析 lValgrind u访问 Valgrind HOW TO 站点http:/tldp.org/HOWTO/Valgrind-HOWTO/ uSteve Best,“Debugging Memory Problems”(Linux Magazine,2003.05) lMemwatch lElectric fence
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号