泄漏本质
无法回收无用的对象
先暂时性的忽略shell命令分析内存状况 查看profile MAT使用
出现场景及解决优化措施
- 单例模式
原因
因为单例对象的生命周期比较长,相当于应用程序Application的生命周期,如果Context使用的是当前Activity或者Fragment中的上下文,则生命周期较短,因此,当生命周期较长的对象引用了“较短”的上下文,会出现这样的情况,当Context所属的Activity或者Fragment 生命周期结束时(可能执行了onDestroy),Java的垃圾回收机制尝试回收该Activity时发现该类还存在引用(单例对象持有了这个引用),则会引发内存泄漏,因此推荐使用context.getApplicationContext()(即生命周期较长的上下文). ------即生命周期持有了生命力弱的上下文context
措施:要使用Application的context
…… TODO