在电脑上,我们都会保存一些重要的文件,很怕会被泄漏出去,最近有win7用户却遇到内存泄露的情况,也不知道要怎么解决,相信很人遇到这种情况的也不会解决,那么win7内存泄露如何解决呢,下面小编给大家分享win7内存泄漏的解决方法。
推荐系统:win7旗舰版32位系统下载
解决方法:
1、在Android开发中,我们经常会使用Handler来控制主线程UI程序的界面变化,使用非常简单方便,但是稍不注意,很容易引发内存泄漏。

2、我们知道,Handler、Message、MessageQueue是相互关联在一起的,Handler通过发送消息Message与主线程进行交互,如果Handler发送的消息Message尚未被处理,该Message及发送它的Handler对象将被MessageQueue一直持有,这样就可能会导致Handler无法被回收。

3、这是一个单例模式的标准写法,表面上看没有任何问题,但是细心的同学会发现,构建该单例的一个实例时需要传入一个Context,此时传入的Context就非常关键,如果此时传入的是Activity,由于Context会被创建的实例一直持有,当Activity进入后台或者开启设置里面的不保留活动时,Activity会被销毁,但是单例持有它的Context引用,Activity又没法销毁,导致了内存泄漏。

4、如果此时传入的Context是ApplicationContext,由于ApplicationContext的生命周期是和app一致的,不会导致内存泄漏。但是我们不能指望使用这个单例的用户始终传入期望的Context,因此需要对这个单例设计进行调整,可以在构造函数中对mContext赋值改为this.mContext = context.getApplicationContext;当然,也可以直接不让用户传入context。

5、重构Singleton,把构建单例时的context去掉,避免外面使用的人传入错误参数。

6、当然,也可以把InnerClass单独抽出来作为一个内,写成单例模式,完成同样的功能,同时也可以避免内存。

以上就是win7内存泄漏的解决方法,有遇到内存泄漏的话,可以按上面的方法来进行解决。
网友评论