单利模式内存泄漏

原创 2016年05月31日 16:48:50

在Java开发中,为了获得引用方便,我们的开发同学经常使用单例模式。该模式本身不会引起内存泄漏,但是如果和其它实例配合时候使用不当则会引起很大的隐患。究其原因在于单例模式中必然出现sInstance类的静态成员变量来保存单例的实例。但是如果该单例有成员变量保存了其它实例的引用如:

public class MyInstance {

private static sIntance;
private Listener mL;

public MyInstance getInstance() {
    if (null == sInstance)
        sInstance = new MyInstance();
    return sInstance;
}

public void setListener(Listener l) {
    mL = l;
}
}

则会构成引用链 VMRoot -〉sIntance -〉mL -〉your listener instance

从而会造成你的listener在sInstance不被置null的情况下永远不会被垃圾收集,所以最好不要在单例模式中保存其它实例的引用,如果非要使用,也要采用SoftReference的方式。单例模式如果混用了observer模式,恭喜你,操作不当你可能会中内存泄漏的大奖,一大波实例将无法回收.因为你很可能让你的view实现Listener接口或者使用了内部类,这样将导致StrongRef-〉listener-〉view-〉Activity一大串无法释放。

单例造成的内存泄漏

由于单例的静态特性使得其生命周期跟应用的生命周期一样长,所以如果使用不恰当的话,很容易造成内存泄漏。比如下面一个典型的例子,public class AppManager { private...
  • syc434432458
  • syc434432458
  • 2016年06月08日 14:11
  • 3149

Android内存泄漏(使用单例模式造成的内存泄漏)

Android内存泄漏(使用单例设计模式造成的内存泄漏)
  • qq_32618417
  • qq_32618417
  • 2016年06月18日 01:03
  • 4943

Android内存泄漏(使用单例模式造成的内存泄漏)

http://blog.csdn.net/qq_32618417/article/details/51703414 使用单例模式造成的内存泄漏     Android的单例模式在我们项目开...
  • tiramisu_ljh
  • tiramisu_ljh
  • 2017年04月20日 19:56
  • 445

单利模式内存泄漏

在Java开发中,为了获得引用方便,我们的开发同学经常使用单例模式。该模式本身不会引起内存泄漏,但是如果和其它实例配合时候使用不当则会引起很大的隐患。究其原因在于单例模式中必然出现sInstance类...
  • beijing2000000
  • beijing2000000
  • 2016年05月31日 16:48
  • 294

Activity中使用handle存在内存泄漏的隐患

在Android开发中,经常会在Activity中使用handler来进行线程间通信,使主线程能够实时更新UI。       但是在Android Studio中,发现使用handler时会有黄色的...
  • u012551993
  • u012551993
  • 2016年07月22日 23:47
  • 1985

Android-主Activity不一样的单利模式

Android-主Activity不一样的单利模式 背景 目前有一部分android APP需要这样一种场景,即应用需要保留一个应用首页主Activity,其它子Activity永远在主Ac...
  • u014610664
  • u014610664
  • 2016年06月13日 11:29
  • 11630

单利模式

public class A{ private static A a; private A{ } public synchronized static A getInstanc()...
  • u013057682
  • u013057682
  • 2015年08月25日 10:16
  • 142

Android性能优化之内存

原文出处:http://blog.csdn.net/qq_23191031。作者: 大圣代 APP内存的使用,是评价一款应用性能高低的一个重要指标。虽然现在智能手机的内存越来越大,但是一个好...
  • ZhaiKun68
  • ZhaiKun68
  • 2017年07月25日 13:35
  • 326

Android 内存泄露和性能检测

Android Studio的内存分析界面 一般分析内存泄露, 首先运行程序,打开日志控制台,有一个标签Memory ,我们可以在这个界面分析当前程序使用的内存情况, 一目了然, 我们再也不需要苦苦...
  • u012482178
  • u012482178
  • 2018年01月06日 13:29
  • 273

java当中的单例模式

java当中单例模式用得非常的多,特别是我在安卓开发当中
  • realrealrealrealreal
  • realrealrealrealreal
  • 2014年11月05日 00:18
  • 654
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单利模式内存泄漏
举报原因:
原因补充:

(最多只允许输入30个字)