Android apk 插件啟動內存釋放問題
插件中啟動apk,一般情況下在apk中內存不存在問題,但在插件中可能會存在并放大這個問題,原因是在插件中重新loadclass后,原來插件的資源會重新加載,而在安裝的apk中除非被系統殺掉,不然可以重新利用原來沒關掉的資源;在插件中具體表現如下:
1.static定義的變量,假如是存放外部傳進來的實例,記得在推出時必須置空,不然導致傳入的實例無法釋放;內部new出來的保存在靜態變量中也一樣;
2.單例中new出來的實例存放到List等容器中,在退出時記得clear()下清空容器,不然內存還會泄露:
比如類中定義
private List<ClientTaskBase> tasks = new ArrayList<ClientTaskBase>();
然后在方法中使用
ClientTaskBase task_= (ClientTaskBase) Class.forName(value).newInstance();tasks.add(task_);
在退出時,必須的清空
另外可用類的finalize方法來檢測下類是否已被釋放,該方法是在垃圾回收時釋放內存會調用
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答