欢迎来到天天文库
浏览记录
ID:20791485
大小:292.50 KB
页数:16页
时间:2018-10-15
《linux下如何检查内存泄露》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux下如何检查内存泄露什么是内存泄露?以下说法哪个正确?应用程序在分配某段内存后,由于程序使用错误造成物理内存的缺失应用程序在分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费什么是内存泄露?指的是堆内存的泄露,堆内存是指程序从堆中分配的,任意大小的使用后必须显式释放的内存分配:malloc,calloc,realloc,new释放:free,delete由于疏忽或错误造成程序未能释放已经不再使用的内存的情况Linux下检查内存泄露内存泄露的主要表现及其危害当程序连续运行时,与程序相关的内存(或堆)变的越来越大
2、内存泄露会减少可用内存的数量从而降低计算机的性能当所消耗的内存达到系统的上限时候,自己会崩溃,严重者导致系统挂起或崩溃以下程序会发生内存泄露吗?(一)以下程序会发生内存泄露吗?(一)以下程序会发生内存泄露吗?(二)以下程序会发生内存泄露吗?(二)以下程序会发生内存泄露吗?(二)ps:显示瞬间进程的状态常用参数:l:长格式输出u:按用户名和启动时间的顺序来显示进程j:用任务格式来显示进程f:用树形格式来显示进程a:显示所有用户的所有进程x:显示无控制终端的进程r:显示运行中的进程ww:避免详细参数被截断以下程序会发生内存泄露吗?(二)ps使用
3、范例$ps//列出当前shell里当前用户的进程$ps–uyuhong//列出用户yuhong运行的所有进程$ps–el//以详细列表方式显示运行的所有进程$psaux//以详细的BSD风格显示运行的所有进程%MEM:占用的内存的使用率VSZ:虚拟内存大小,即一个程序完全驻留在内存的话需要占用多少内存空间RSS:当前实际占用了多少内存STAT:进程当前状态进程的状态TASK_RUNNING(运行)TASK_INTERRUPTIBLE(可中断)TASK_UNINTERRUPTIBLE(不可中断)TASK_ZOMBIE(僵死)TASK_STOP
4、PED(停止)RSDZT后缀<(高优先级进程)N(低优先级进程)L(内存锁页)s(该进程为会话首进程)+(前台进程)l(多线程进程)如果有进程状态为Ssl?以下程序会发生内存泄露吗?(二)以下程序会发生内存泄露吗?(二)top:按序显示正在执行的进程$top[-][ddelay][ppid][q][c][C][S][s][i][niter][b]uptime行,系统重新引导至今的时间、用户数、负载平均数第二行,进程统计行:进程总数,sleeping,running,zombie和stopping进程数第三行,CPU统计数据:用户、系统、ni
5、ce以及空闲进程所占CPU时间的百分比第四行,存储器的统计数据:可用内存总数、自由内存、使用的内存、共享内存,用于缓存空间第五行,虚拟内存或交换区统计数据:可用总交换区、使用的交换区、自由交换区以及缓存交换区自此以下……,类似于PS格式以下程序会发生内存泄露吗?(二)Linux下检查内存泄露ps–aux,top静态分析工具–mtrace在main.c代码中嵌入:#include…mtrace();/*要检查是否会有内存泄露的代码段*/muntrace();编译运行$gcc–omainmain.c$exportMALLOC
6、_TRACE=./log//用该环境变量来定义一个文件log用于输出$./main$catlogLinux下检查内存泄露ps–aux,top静态分析工具–mtrace动态分析Valgrind访问ValgrindHOWTO站点http://tldp.org/HOWTO/Valgrind-HOWTO/SteveBest,“DebuggingMemoryProblems”(LinuxMagazine,2003.05)MemwatchElectricfence
此文档下载收益归作者所有