分析内存溢出原因
内存分析工具
mat(memory analysis tool)
步骤:
- 打开会出现内存溢出的程序,想办法制造内存溢出使程序崩溃;
- 进入eclipse的ddms,选中当前要分析的程序;
- 点击eclipse中的ddms下的Dump HPROF file这个按键,导出一个xxx.hprof文件;
- 得到一个xxx.hprof这个文件之后,在此文件所处目录下按住shift+鼠标右键,选择在此处打开命令窗口;
- 在命令行输入”hprof-conv xxx.hprof convert_xxx.hprof(转换后的文件名)”,在该目录下就会生成对应的转化后的一个文件;(这条指令就是执行了sdk下的platform-tools中hprof-conv.exe)
- 接下来使用mat内存分析工具,打开convert_xxx.hprof(转换后的文件);
- 如图所示:
- 点击Shallow Heap根据内存占用多少排序;
- 找到占用内存比较多的一条记录,右键选择List Objects–>with incoming reference;
- 定位到某个类中,寻找内存泄露的地方;
总结
程序中一定要记得释放资源,特别是图片bitmap和集合