如果壹個進程占用內存超過了這個內存限制,就會報OOM的問題,很多涉及到大圖片的頻繁操作或者需要讀取壹大段數據在內存中使用時,很容易報OOM的問題,如果此時在程序中人為地使用GC會嚴重影響程序運行的流暢性,並且有時候並沒有什麽卵用,多數時候我們可以在android:minSdkVersion=”11”及以上的應用中,給AndroidManifest.xml的Application標簽增加”android:largeHeap=”true”“這句話,請求系統給該應用分配更多可申請的內存:
但是這種做法的弊端有:
有時候並不能徹底解決問題,比如API Level小於11時,或者是應用需要的內存比largeHeap分配的更大的時候;當該應用在後臺時,仍然占用著的內存,系統總的內存就那麽多,如果每個應用都向系統申請更多的內存,會影響整機運行效率。
為了徹底地解決應用內存的問題,Android引入了多進程的概念,它允許在同壹個應用內,為了分擔主進程的壓力,將占用內存的某些頁面單獨開壹個進程,比如Flash、視頻播放頁面,頻繁繪制的頁面等。Android多進程使用很簡單,只需要在AndroidManifest.xml的聲明四大組件的標簽中增加”android:process”屬性即可,process分私有進程和全局進程,私有進程的名稱前面有冒號,全局進程沒有,like this:
為了節省系統內存,在退出該Activity的時候可以將其殺掉(如果沒有人為殺掉該進程,在程序完全退出時該進程會被系統殺掉),like this: