android程序内存泄漏的原因和解决办法
2016-03-15 21:47
633 查看
转自:http://www.cnblogs.com/yejiurui/archive/2013/02/23/2923418.html
内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。即所谓内存泄漏。
内存泄漏简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。
从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。
Android应用内存泄漏的的原因有以下几个:
1查询数据库后没有关闭游标cursor
2 构造Adapter时,没有使用 convertView 重用
3 Bitmap对象不在使用时调用recycle()释放内存
4 对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放
内存泄漏的发现:
通过DDMS中的heap工具,去发现是否有内存溢出。
内存泄漏如何解决:
通过内存分析工具 MAT(Memory Analyzer Tool),找到内存泄露的对象
内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。即所谓内存泄漏。
内存泄漏简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。
从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。
Android应用内存泄漏的的原因有以下几个:
1查询数据库后没有关闭游标cursor
2 构造Adapter时,没有使用 convertView 重用
3 Bitmap对象不在使用时调用recycle()释放内存
4 对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放
内存泄漏的发现:
通过DDMS中的heap工具,去发现是否有内存溢出。
内存泄漏如何解决:
通过内存分析工具 MAT(Memory Analyzer Tool),找到内存泄露的对象
相关文章推荐
- Android 2.2 API ---------ImageButton
- 手机震动的节奏(Vibrator对象及周期运用)
- iOS,Android,WP, .NET通用AES加密算法
- android学习日常3-15 关于单选框附加监听的复习
- Android 图片压缩
- 介绍Text-To-Speech在Android中的用法
- android山寨卫士开发笔记-001
- windows 7下,给android ndk编译libcurl
- Android开发Style的使用,控件共同属性的抽取
- Android入门简介
- android——彻底关闭——应用程序
- 重装电脑以后,android studio打不开,提示找不到JVM
- win10中Android模拟器在安装了intelhaxm-android仍无法启动
- android游戏开发课程 设置按钮点击…
- android游戏开发课程 layout_…
- Android MVP 使用教程
- Android View三种属性——VISIBLE,INVISIBLE,GONE
- 【组合控件】android自定义控件之带文字的ImageView
- 解决android项目api高于模拟器api…
- android使用单选并设置按钮提醒