Android apk 插件啟動(dòng)內(nèi)存釋放問(wèn)題
Android apk 插件啟動(dòng)內(nèi)存釋放問(wèn)題
插件中啟動(dòng)apk,一般情況下在apk中內(nèi)存不存在問(wèn)題,但在插件中可能會(huì)存在并放大這個(gè)問(wèn)題,原因是在插件中重新loadclass后,原來(lái)插件的資源會(huì)重新加載,而在安裝的apk中除非被系統(tǒng)殺掉,不然可以重新利用原來(lái)沒(méi)關(guān)掉的資源;在插件中具體表現(xiàn)如下:
1.static定義的變量,假如是存放外部傳進(jìn)來(lái)的實(shí)例,記得在推出時(shí)必須置空,不然導(dǎo)致傳入的實(shí)例無(wú)法釋放;內(nèi)部new出來(lái)的保存在靜態(tài)變量中也一樣;
2.單例中new出來(lái)的實(shí)例存放到List等容器中,在退出時(shí)記得clear()下清空容器,不然內(nèi)存還會(huì)泄露:
比如類(lèi)中定義
private List<ClientTaskBase> tasks = new ArrayList<ClientTaskBase>();
然后在方法中使用
ClientTaskBase task_= (ClientTaskBase) Class.forName(value).newInstance(); tasks.add(task_);
在退出時(shí),必須的清空
另外可用類(lèi)的finalize方法來(lái)檢測(cè)下類(lèi)是否已被釋放,該方法是在垃圾回收時(shí)釋放內(nèi)存會(huì)調(diào)用
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android開(kāi)發(fā)之permission動(dòng)態(tài)權(quán)限獲取詳解
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)之permission動(dòng)態(tài)權(quán)限獲取,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Android實(shí)現(xiàn)仿微信tab高亮icon粘著手的滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)仿微信tab高亮icon粘著手的滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08將cantk runtime嵌入到現(xiàn)有的APP中的方法
今天小編就為大家分享一篇關(guān)于將cantk runtime嵌入到現(xiàn)有的APP中的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12android獲取當(dāng)前運(yùn)行Activity名字的方法
這篇文章主要介紹了android獲取當(dāng)前運(yùn)行Activity名字的方法,對(duì)比分析了兩種實(shí)現(xiàn)方法供大家選擇,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路
本文主要介紹 淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路,這里詳細(xì)介紹了相關(guān)Binder的資料,幫助大家理解學(xué)習(xí)Android 源碼Binder通信機(jī)制,有興趣的小伙伴可以參考下2016-08-08