天天看點

android 面試題

一,什麼是OOM

(1)先從定義開始:

Android(Java)中常見的容易引起記憶體洩漏的不良代碼

Android主要應用在嵌入式裝置當中,而嵌入式裝置由于一些衆所周知的條件限制,通常都不會有很高的配置,特别是記憶體是比較有限的。如果我們編寫的代碼當中有太多的對記憶體使用不當的地方,難免會使得我們的裝置運作緩慢,甚至是當機。為了能夠使得Android應用程式安全且快速的運作,Android 的每個應用程式都會使用一個專有的Dalvik虛拟機執行個體來運作,它是由Zygote服務程序孵化出來的,也就是說每個應用程式都是在屬于自己的程序中運作的。一方面,如果程式在運作過程中出現了記憶體洩漏的問題,僅僅會使得自己的程序被kill掉,而不會影響其他程序(如果是system_process 等系統程序出問題的話,則會引起系統重新開機)。另一方面Android為不同類型的程序配置設定了不同的記憶體使用上限,如果應用程序使用的記憶體超過了這個上限, 則會被系統視為記憶體洩漏,進而被kill掉。

(2)結論是記憶體不夠用就叫oom.

     Android裝置記憶體一般比較小,容易引起oom.

     Android每個應用程式在專有的Dalvik虛拟機執行個體中運作,Android配置設定固定記憶體。超出配置設定的記憶體,引起oom,系統KILL掉,程式結束。

     Android系統程序OOM,機器重新開機。

3.Fragment與Activity的生命周期中最大的不同就是存儲到後退棧中的過程