美文网首页
内存优化实战

内存优化实战

作者: 勇敢地追 | 来源:发表于2020-09-08 09:27 被阅读0次

最近,因为项目时间不紧的原因,就对项目的某些页面进行了内存观察,发现了两处优化点.特意记录下来

1.单例引发的内存泄漏

我在项目中涉及到的一个单例是这样的

object LiveCenter {
    ......
    var function: Function1<Boolean, Any>? = null

    fun registerListener(function: Function1<Boolean, Any>?) {
        this.function = function
    }
    ......
}

LiveCenter 注册了一个监听.这个 Function1 是在 Fragment 中 new 了一个实例.这个时候 LiveCenter 就持有了 Fragment 的引用导致内存泄漏.所以需要写一个 release 方法,在 release 方法中使 function = null
这个和常说的 Context 引发内存泄漏其实差不多.这个可以通过 Android Studio 自带的 Android Profiler.具体用法自己搜吧

2.Fragment 作为 Listener 引发的内存泄漏

有的时候为了方便我们会这么写

public class Instance {
    public Instance(Listener listener) {
        this.listener = listener;
    }
}

public class FragmentA extends BaseFragment implements Listener {
}

这么写很常见,如果只是 FragmentA 每 new 一次, Instance 也 new 一次.那么就没啥问题.但如果 FragmentA 对应的 Activity 是 SingleTask 模式.也就是说 FragmentA 可能会多次整个刷新,导致了每次都 new Instance.每次 new 就多了一个引用导致内存泄漏.所以在这种情况下一定要注意把那个 listener 置为 null

相关文章

  • App内存优化

    1.内存优化介绍及工具选择 2.Android内存管理机制 3. 内存抖动解决实战 4. 内存泄露解决实战 hpr...

  • Android性能优化(五)之细说Bitmap

    在上一篇《Android性能优化(四)之内存优化实战》中谈到那个内存中的大胖子Bitmap,Bitmap对内存的影...

  • 内存优化实战

    最近,因为项目时间不紧的原因,就对项目的某些页面进行了内存观察,发现了两处优化点.特意记录下来 1.单例引发的内存...

  • Android | App内存优化 之 全面理解MAT

    本文以上一篇博客《Android | App内存优化 之 内存泄漏 要点概述 以及 解决实战》获得的堆转储文件为例...

  • 内存优化

    内存优化、UI优化(布局优化、会只优化)、速度优化(线程优化、网络优化)、启动优化、电量优化 内存优化 内存抖动:...

  • 性能调优参数

    堆内存性能优化参数 垃圾回收性能优化参数 JVM服务参数调优实战 服务器配置:8 CPU,8G MEM,JDK 1...

  • Android进阶知识点

    Android进阶 内部调优高效文件IO与网络IO微信全面调优内存和网络贴近实战之问题优化编程优化 高级音视频 [...

  • Android性能优化篇之内存优化--内存泄漏

    引言 1. Android性能优化篇之内存优化--内存泄漏 2.Android性能优化篇之内存优化--内存优化分析...

  • Android性能优化篇之UI渲染性能优化

    引言 1. Android性能优化篇之内存优化--内存泄漏 2.Android性能优化篇之内存优化--内存优化分析...

  • Android性能优化篇之计算性能优化

    引言 1. Android性能优化篇之内存优化--内存泄漏 2.Android性能优化篇之内存优化--内存优化分析...

网友评论

      本文标题:内存优化实战

      本文链接:https://www.haomeiwen.com/subject/isnbdktx.html