SylixOS调试与性能分析技术--内存泄漏检测
来源:互联网 发布:百度网盘会员 淘宝 编辑:程序博客网 时间:2024/06/09 20:45
1.内存泄漏检测原理
内存泄漏是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃。
SylixOS提供了内存检测方法,可以检测和跟踪内存泄漏,其原理如下:
l 当开启内存泄漏检测功能时,创建一个链表;
l 当执行申请内存操作时,将信息记录至链表中的一个节点;
l 当执行释放内存操作时,将对应的链表节点信息删除;
l 当执行打印内存泄漏跟踪消息时,打印链表中所有的节点数据。
2.内存泄漏检测调试技术
SylixOS通过在系统中输入shell命令进行内存泄漏检测,其命令如下:
l leakchkstart [max save node number] [pid](启动堆泄漏检查)
leakchkstart命令需要提供两个参数:
最大跟踪节点数(如果泄漏超过这个数就不记录)
PID信息(当PID大于0时,检测指定进程PID;PID等于0时,检测内核进程;当PID小于0时,检测所有进程)
l leakchkstop(停止堆泄漏检查并打印泄漏消息)
l leakchk(打印内存泄漏跟踪消息)
3.内存泄漏检测示例
启动内存泄漏检查,如程序清单3.1所示。
程序清单3.1 启动内存泄漏检测
[root@sylixos:/apps/app_demo]# leakchkstart 1024 -1leakcheck start checking...
打印当前内存泄漏信息,如程序清单3.2所示。
程序清单3.2 打印内存泄漏信息
[root@sylixos:/apps/app_demo] leakchkHEAP THREAD TIME ADDR SIZE PURPOSE------- --------- -------- -------- ------- ----------------------
模拟内存泄漏,如程序清单3.3所示。
程序清单3.3 模拟内存泄漏
#include <stdio.h>#include <stdlib.h>int main (int argc, char **argv){ int *p; p = (int*)malloc(sizeof(int) * 128); return (0);}
再次打印当前内存泄漏信息,如程序清单3.4所示。
程序清单3.4 再次打印泄漏信息
[root@sylixos:/apps/app_demo]# leakchkHEAP THREAD TIME ADDR SIZE PURPOSE------- --------- -------- -------- ------- ----------------------1 app_demo Sat Jan 01 09:47:56 2017 c2055008 116 mem alloc
停止内存泄漏检查并打印泄漏信息,如程序清单3.5所示。
程序清单3.5 停止内存泄漏检测
[root@sylixos:/apps/app_demo]# leakchkstopHEAP THREAD TIME ADDR SIZE PURPOSE------- --------- -------- -------- ------- ----------------------1 app_demo Sat Jan 01 09:47:56 2017 c2055008 116 mem alloctotal unfree segment: 1 size: 116
阅读全文
0 0
- SylixOS调试与性能分析技术--内存泄漏检测
- SylixOS内存泄漏检测
- Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的自由软件。
- Valgrind ---内存调试,内存泄漏检测以及性能分析的软件开发工具
- linux内存调试、内存泄漏检测以及性能分析的工具-valgrind
- Valgrind ---内存调试,内存泄漏检测以及性能分析的软件开发工具
- 内存分析与内存泄漏检测
- Unity lua内存泄漏与性能检测
- Android性能优化与内存泄漏分析
- 内存泄漏与检测
- 内存泄漏检测分析工具
- Valgrind 内存调试、内存泄漏检测
- android中内存泄漏场景分析与检测
- VC中内存泄漏如何检测与处理系列---(1)使用CRT调试功能来检测内存泄漏
- SylixOS调试方式详解——性能分析
- Android性能分析-内存泄漏
- 通过GC日志分析程序性能与内存泄漏
- 深度分析内存泄漏原因,使用MAT工具检测内存泄露和性能
- 原始上传下载图片
- 阿里云ECS服务器挂载磁盘
- 探索式测试知识点
- 经典:区间dp-合并石子
- Java算法实现之最大子数组
- SylixOS调试与性能分析技术--内存泄漏检测
- jsp中Double类数字太大时页面正常显示而不要用科学计数法
- 25岁Java工程师如何转型学习人工智能?
- 全面解析JavaScript Module模式
- Spring 数据库数据源DBCP配置说明
- Spring-boot中Conditional介绍
- 几何题
- mysql插入数据抛出DuplicateKeyException导致无法插入
- 1.jdk8新特性概述