内存泄漏的原因和处理方式

 如何相对内存泄漏的理解首先要知道java内存分配机制,以及GC回收机制。
 
 对象存储原理:对于基本数据类型的话都是在栈中存储的,而对于引用数据类型的话是在栈中
 存引用堆中存放对象。
 GC回收的原理:如果该对象没有在被引用便会被回收,如内存不足的话
 优先回收 虚引用--->弱引用--->软引用--->强引用。


 一、导致原因
 ①、当我们查询数据库后没有关闭游标cursor。
 ②、在进行适配数据的时候如适配器Adapter时,没有对convertView进行复用导致创建很多个对象
 ③、在对图片进行处理的时候 Bitmap对象不在使用时没有调用recycle()方法进行内存释放。
 ④、某一个对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放。
 ⑤、处理文件流I/O的时候,没有关闭流也会导致内存泄漏。

二、 内存泄漏的发现和处理
 ①、Android自带的工具DDMS中的heap工具,去发现是否有内存溢出。
 ②、LeakCanary进行内存泄漏检测。
 ③、通过内存分析工具 MAT(Memory Analyzer Tool),找到内存泄露的对象进行处理。







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值