static关键字所导致的内存泄漏问题
来源:互联网 发布:mac怎么关闭窗口 编辑:程序博客网 时间:2024/06/09 23:24
转载自:http://blog.csdn.net/lovejavasman/article/details/52643089
大家都知道内存泄漏和内存溢出是不一样的,内存泄漏所导致的越来越多的内存得不到回收的失手,最终就有可能导致内存溢出,下面说一下使用staitc属性所导致的内存泄漏的问题。
在dalvik虚拟机中,static变量所指向的内存引用,如果不把它设置为null,GC是永远不会回收这个对象的,所以就有了以下情况:
非静态内部类的静态引用。然后在2秒之后我们要finish掉这个activity,会造成什么问题呢?我们知道,内部类和外部类之间是相互持有引用的,SecondActivity实例持有了haha的引用,但这里haha是用static修饰的,上面说了,虚拟机不会回收haha这个对象,从而导致SecondActivity实例也得不到回收,造成内存溢出。这货还在这得不到回收。(传送门:http://www.jianshu.com/p/c49f778e7acf Android下内存泄露分析)。
怎么解决这个问题呢,很简单,只要在Activity的onDestroy方法里把haha设为null就行啦
那么还有另外一种情况,单例的问题。单例也是用了其static属性,很多单例,往往需要用到context对象,而又是通过传值的方式获得,比如:
先来一个单例
再来一个Activity来用它,context传入一个this,再2秒之后关闭Activity后来我们发现这货还在,又是得不到回收:
怎么办呢,还是像上面那样,把静态对象设置为null,或者我们传入context的时候,别传this了,this可是当前Acitvity啊,传Application Context即可。但是不是都可以传Application Context呢,明显不是,有的事是Application Context干不了的,这个得看具体情况而定。
阅读全文
0 0
- static关键字所导致的内存泄漏问题
- static关键字所导致的内存泄漏问题
- static关键字所导致的内存泄漏问题
- 常见的导致Android内存泄漏问题
- android中共享全局数据的方法(static导致的内存泄漏问题,但其实并未解决)
- 内存分配不成功导致内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 关于Android VideoView导致的内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 常见的八种导致 APP 内存泄漏的问题
- 【Maven学习】之 初探
- POJ 1016--Numbers That Count
- 分布式事物
- 小马哥淡定的ubuntu之旅——J2EE开发
- 产生数(并查集)
- static关键字所导致的内存泄漏问题
- 使用Mysql Merge存储引擎实现分表
- centos 6.4 安装mysql 5.6
- JAVA开源B2C系统
- EffectiveJava 学习记录 一
- C++结构体
- Bzoj1455 罗马游戏
- 清除浮动的原理和方法
- SOCKS5代理原理探索