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

    xiaoxiao2021-03-25  122

    如何相对内存泄漏的理解首先要知道java内存分配机制,以及GC回收机制。 对象存储原理:对于基本数据类型的话都是在栈中存储的,而对于引用数据类型的话是在栈中 存引用堆中存放对象。 GC回收的原理:如果该对象没有在被引用便会被回收,如内存不足的话 优先回收 虚引用--->弱引用--->软引用--->强引用。 一、导致原因 ①、当我们查询数据库后没有关闭游标cursor。 ②、在进行适配数据的时候如适配器Adapter时,没有对convertView进行复用导致创建很多个对象 ③、在对图片进行处理的时候 Bitmap对象不在使用时没有调用recycle()方法进行内存释放。 ④、某一个对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放。 ⑤、处理文件流I/O的时候,没有关闭流也会导致内存泄漏。 二、 内存泄漏的发现和处理 ①、Android自带的工具DDMS中的heap工具,去发现是否有内存溢出。 ②、LeakCanary进行内存泄漏检测。 ③、通过内存分析工具 MAT(Memory Analyzer Tool),找到内存泄露的对象进行处理。
    转载请注明原文地址: https://ju.6miu.com/read-13380.html

    最新回复(0)