在電腦上,我們都會保存一些重要的文件,很怕會被泄漏出去,最近有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內存泄漏的解決方法,有遇到內存泄漏的話,可以按上面的方法來進行解決。

閩公網安備 35020302033304號


網友評論