Android之static靜態變量生命週期

原文鏈接:http://www.cnblogs.com/Joanna-Yan/

靜態變量引用與內存回收、內存泄露這些問題有關,有必要加深研究和理解。

 

一、靜態變量在類被加載的時候分配內存。

         類在什麼時候被加載?當我們啓動一個app的時候,系統會創建一個進程,此進程會加載一個DVM實例,然後代碼就運行在DVM之上,類的加載和卸載、垃圾回收等事情都由DVM負責。也就是說進程啓動的時候,類被加載,靜態變量被分配內存。

 

二、靜態變量在類被卸載的時候銷燬。

         類在什麼時候被卸載?答:在進程結束的時候。說明:一般情況下,所有的類都是默認的ClassLoader加載的,只要ClassLoader存在,類就不會被卸載,而默認的ClassLoader生命週期是與進程一致的,這裏討論一般情況。

 

三、Android的進程什麼時候結束

  • Android 會在資源不足的情況下,隨時殺掉進程,而且會Android會在資源足夠的時候,重啓被殺掉的進程。
  • 不能把退出所有Activity等同於進程的退出,所以在用戶點擊圖標啓動應用的時候,以前存放於靜態變量中的值,有可能還存在,因此要視具體情況給予清空操作。

 

四、Application也是一樣不可靠

         Application其實是一個單例對象,也是放在內存中的,當進程被殺掉,就全清空了,只不過Android系統會幫重建Application,而我們存放在Application的數據自然就沒有了,還是得自己處理。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章