zoukankan      html  css  js  c++  java
  • LeakCanary检测内存泄漏

    内存泄漏原因:
    线程造成的内存泄漏
    Handler造成的内存泄漏
    单例导致内存泄露
    静态变量导致内存泄露
    非静态内部类导致内存泄露
    未取消注册(BroadcastReceiver )或回调导致内存泄露
    Timer和TimerTask导致内存泄露
    集合中的对象未清理造成内存泄露
    资源未关闭或释放导致内存泄露
    属性动画造成内存泄露
    WebView造成内存泄露
     
     

    添加依赖:

     implementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            if (LeakCanary.isInAnalyzerProcess(this)) {//1
                // This process is dedicated to LeakCanary for heap analysis.
                // You should not init your app in this process.
                return;
            }
            LeakCanary.install(this);
    
        }
    }

    要开启sd卡权限

     Android内存优化策略:

    1)在循环内尽量不要使用局部变量
    2)不用的对象即时释放,即指向NULL
    3)数据库的cursor即时关闭。
    4)构造adapter时使用缓存contentview
    5)调用registerReceiver()后在对应的生命周期方法中调用unregisterReceiver()
    6)即时关闭InputStream/OutputStream。
    7)android系统给图片分配的内存只有8M, 图片尽量使用软引用, 较大图片可通过BitmapFactory缩放后再使用,并及时recycle
    8)尽量避免static成员变量引用资源耗费过多的实例。
  • 相关阅读:
    利用NPOI导出数据到Execl
    分享微信开发Html5轻游戏中的几个坑
    Integrate non-OSGi Dependencies
    Websocket Component
    ServiceMix in daemon mode
    springboot jwt配置(更新中)
    npm run build 后的dist文件,发布到web服务。
    不重复随机数列的生成算法 Leetcode 384. Shuffle an Array
    LSM树-HBASE为什么快
    混沌工程初探
  • 原文地址:https://www.cnblogs.com/Ocean123123/p/11025138.html
Copyright © 2011-2022 走看看