Android進程管理及靜態變量垃圾回收

一、Android靜態變量的生命週期jvm

靜態變量的生命週期遵照Java的設計。咱們知道靜態變量是在類被load的時候分配內存的,而且存在於方法 區。當類被卸載的時候,靜態變量被銷燬spa

在PC機的客戶端程序中,一個類被加載和卸載,可簡單的等同於jvm進程的啓動和結束。那麼在Android中 呢?用的Dalvik vm也是同樣的。不過Android不太突出的進程概念,因此對靜態變量的生命週期就會感受模糊,這種模糊對於值類型是無所謂的,若是是靜態的對象引用, 則與內存回收、內存泄漏這些問題有關,有必要加深研究和理解。設計

二、Android中的進程何時結束對象

      這個是Android對進程和內存管理不一樣於PC的核心——若是資源足夠,Android不會殺掉任何進程,另外一個意思就是進程隨時可能會被殺掉。 而Android會在資源夠的時候,重啓被殺掉的進程。也就是說靜態變量的值,若是不作處理,是不可靠的,能夠說內存中的一切都不可靠。若是要可靠,仍是得保存到Nand或SD卡中去,在重啓的時候恢復回來。(PS:若是資源緊張,系統會殺掉進程,此時靜態變量引用不不會被垃圾回收器回收,形成內存泄漏)生命週期

      另外一種狀況就是不能把退出全部Activity等同於進程的退出,因此在用戶點擊圖標啓動應用的時候,之前存放於靜態變量中的值,有可能還存在,因 此要視具體狀況給予清空操做進程

三、靜態引用的對象不會被垃圾回收內存

只要靜態變量沒有被銷燬也沒有置null,其對象一直被保持引用,也即引用計數不多是0,所以不會被垃圾回收。所以,單例對象在運行時不會被回收。資源

相關文章
相關標籤/搜索