作家
登录

Android面试被问到内存泄漏了杂整?

作者: 来源: 2017-12-19 09:15:40 阅读 我要评论

  •         objectList=null; 
  • 单例造成的内存泄漏

    因为单例的静态特点使得其生命周期跟应用的生命周期一样长,所以如不雅应用不恰当的话,很轻易造成内存泄漏。比如下面一个典范的例子。

    1. public class SingleInstanceClass {     
    2.     private static SingleInstanceClass instance;     
    3.     private Context mContext;     
    4.     private SingleInstanceClass(Context context) {         
    5.         this.mContext = context; 
    6.     }   
    7.    
    8.     public SingleInstanceClass getInstance(Context context) {         
    9.         if (instance == null) { 
    10.             instance = new SingleInstanceClass(context); 
    11.         }         
    12.         return instance; 
    13.     } 

    精确的写法应当是传递Application的Context,因为Application的生命周期就是全部应用的生命周期,所以没有任何的问题。

    1. public class SingleInstanceClass {     
    2.  
    3.     private static SingleInstanceClass instance;     
    4.  
    5.     private Context mContext;     
    6.  
    7.     private SingleInstanceClass(Context context) {         
    8.  
    9.         this.mContext = context.getApplicationContext();// 应用Application 的context 
    10.  
    11.     }      
    12.  
    13.     public SingleInstanceClass getInstance(Context context) {         
    14.  
    15.         if (instance == null) { 
    16.  
    17.             instance = new SingleInstanceClass(context); 
    18.  
    19.         }         
    20.  
    21.         return instance; 
    22.  
    23.     } 
    24.  
    25.  
    26.  
    27.  
    28. or  
    29.          
    30.  
    31. //在Application中定义获取全局的context的办法 
    32.  

        推荐阅读

        一周云势:合纵连横竞争加剧,天上地下欢喜冤家

      此次的成功融资让金山云的用户也跟着受益,因为金山云的主流产品将周全降价,个中CDN、云数据库Redis新价动人,降幅最大年夜可达到50%、60%;云办事器价格最大年夜降幅跨越30%;对象存储产品>>>详细阅读


      本文标题:Android面试被问到内存泄漏了杂整?

      地址:http://www.17bianji.com/lsqh/39898.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)