美文网首页
常见的内存泄漏(转载)

常见的内存泄漏(转载)

作者: 侯广丽 | 来源:发表于2017-12-18 13:56 被阅读0次

一、静态变量持有

public class MainActivity extends Activity{   
   private static final String TAG = "MainActivity";   
   private static Context sContext;    
   private static View sView;  
  @Override
   protected void onCreate(Bundle savedInstanceState) {                  
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  
       //这里直接把当前Activity赋值给了静态变量sContext     
        sContext = this;        
        //这种写法和上面的类似
        sView = new View(this);

    }
}

二、单例模式造成

public class DisplayUtils {    
        private static volatile DisplayUtils instance = null;  
        private Context mContext;    
        private DisplayUtils(Context context){      
                  this.mContext = context;
        }   
       public static DisplayUtils getInstance(Context context){        
                  if (instance != null){           
                       synchronized (DisplayUtils.class){              
                              if (instance !=null){
                                     instance = new DisplayUtils(context);
                              }
                        }
                   }        
                  return instance;
      }   
       public int dip2px(float dpValue) {        
                final float scale =     
                 mContext.getResources().getDisplayMetrics().density;              
                 return (int) (dpValue * scale + 0.5f);
       }

}

三、非静态内部类创建静态实例可能造成的内存泄漏

public class NonStaticActivity extends AppCompatActivity {        
    private static Config sConfig;    
    @Override
    protected void onCreate(Bundle savedInstanceState) {        
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_non_static);        
         //Config类并不是静态类,
          sConfig = new Config();
    
    }    
    class Config {
    
    }

}

四、webview造成内存泄漏
对于使用Android的WebView造成的内存泄漏。我在此建议使
https://github.com/delight-im/Android-AdvancedWebView
使用这个优化后的WebView,按照提示进行操作。
五、Handler造成内存泄漏
其他原因造成的内存泄漏
造成内存泄漏的原因有很多,我们这里只是列举了其中比较典
型的几种,当然还有好多原因会造成内存泄漏,比如资源开启
但是未关闭、多线程等等等等。

@Override
protected void onDestroy() {    
     super.onDestroy();
     mHandler.removeCallbacksAndMessages(null);
     mHandler = null;
}

六、其他原因造成的内存泄漏
造成内存泄漏的原因有很多,我们这里只是列举了其中比较典
型的几种,当然还有好多原因会造成内存泄漏,比如资源开启
但是未关闭、多线程等等等等。

相关文章

  • 常见的内存泄漏(转载)

    一、静态变量持有 二、单例模式造成 三、非静态内部类创建静态实例可能造成的内存泄漏 四、webview造成内存泄漏...

  • Xcode调试工具

    一.静态内存分析工具 编译阶段查找内存泄漏等问题 1.常见内存泄漏问题 常见的内存泄漏除了循环引用,CoreFou...

  • 记录电商公司面试

    面试记录 问了常见的内存泄漏常见有哪些 Handler的内存泄漏情况 activity,window,view之间...

  • Android性能优化 内存泄漏和内存溢出

    内存泄漏 内存溢出 常见的内存泄露场景 常见的内存溢出场景

  • Android 内存泄漏

    内存泄漏的原因 常见的内存泄漏与解决方法 检测内存泄漏 认识内存泄漏 根本原因就是当一个对象理应被回收的时候,因为...

  • Android常见内存泄漏汇总

    目录:一、内存泄漏介绍二、常见内存泄漏场景1.单例导致内存泄露2.静态变量导致内存泄漏3.非静态内部类导致内存泄露...

  • LeakCanary和常见内存泄漏场景

    LeakCanary和常见内存泄漏场景 一. LeakCanary介绍 1. 介绍 2. 用法 二. 常见泄漏方式...

  • Android内存泄漏检测和定位

    建议阅读Android常见内存泄漏这篇文章,本文的例子来源于文章中的内存泄漏典型例子 内存泄漏检测工具 Profi...

  • Android内存泄漏相关

    问题1 内存泄漏的基本定义是什么?内存泄漏有什么危害?问题2 开发中常见的内存泄漏的情况有哪些?什么原因造成的?怎...

  • AliOS Things 维测典型案例分析 —— 内存泄漏

    维测典型案例分析1 —— 内存泄漏 在系统运行的过程中,内存泄漏是较为常见但是很难复现的现象,一般的内存泄漏点都是...

网友评论

      本文标题:常见的内存泄漏(转载)

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