A (1284)

正確認識Android內存原理-任務管理器

合理使用內存,正確認識任務管理器,Android內存原理不用在意剩余內存的大小。

很多人把使用其他系統的習慣帶過來了。Android大多應用沒有退出內存的設計有其道理,這和系統對進程的調度機制有關系。
系統有一個規則來回收內存,內存回收調度有個最低值。只有低於這個值時,系統才會選擇關閉一些用戶不需要的東西。這個內存默認
最低值通常設置得很小,所以你會看到內存老在很少的數值徘徊。
這并不影響速度,相反,加快了下次啟動應用的速度。因為就在內存里!這就是安卓Android標榜的優勢之一。
如果人為去關閉進程,沒有太大必要,特別是使用一些自動殺進程的軟件(注:非關閉自啟動的軟件)。那些標稱自動關進程的軟件
殺了應用以後,你會發現有的應用很快就又回來了!(這涉及到另外一個叫後台自啟動的問題)。如果讓它自動地反復地殺進程,無用功不費電才怪!

到這里有人會說了,那為什麼內存少的時候運行大型程序會慢呢?

很簡單,在內存剩余不多時打開大型程序,就會觸發系統自身的進程調度策略,殺掉一些進程以空出足夠內存。這是一個消耗系統資源的操作,
特別是在一個程序頻繁向系統申請內存的時候。
此過程中,系統并不會一下子關閉所有打開的進程,而是根據當前的需求有選擇性地關閉,如果是頻繁的調度自然會拖慢系統。那你可能會說系統怎麼
這麼傻呢,不會自己一下子干掉內存麼?那麼我問事後的諸葛亮還是諸葛亮嗎?有時候通過更改內存回收閥值可以有一定改善。但是改動也可能帶來一些
問題,就是可能兼顧不到數量占絕大多數的中小型應用。所以這個閥值的設定,必須是要兼顧全面的均衡性的。
類似此內存閥值的設定在系統設置里面很容易做到的。如離開即銷毀每個活動、後台進程限制,但不建議去設置。
內存越大越好?越大必意味著硬件上的更多耗電。也是存在一個要和電池容量和體積均衡的問題。
那麼,進程管理軟件有無必要呢?

有一定意義,就是在運行大型程序之前,你可以手動關閉一些進程釋放內存,如按多任務鍵後到里面去清,可以顯著的提高運行速度。這也就是
代替系統提前殺掉進程,可能會比系統殺得更徹底一些。但是,你手動關閉進程其實也不是占用了時間的麼?如果算在運行程序的速度里面會如何?
平常的應用,完全可交由系統自己管理。

談到這里,可能有的朋友會問:如果內存里不殺掉程序是不是會更耗電?

Android的應用在被切換到後台時,它其實已經被暫停了,并不會消耗cpu資源,只保留了在內存的狀態。所以這就是為什麼有的程序切出去然後重進時會到它最開始運行界面的原因了。
那麼那些在後台處理的東西呢?比如音樂播放,是怎樣的?此類程序要在後台處理些東西,它會開啟一個服務,服務可在後台持續運行的。所以在後台
耗電的也只有帶服務的應用了。這個在進程管理里能看到,標簽是service。至於廣播什麼的我就不涉及了.
因此沒有帶服務的應用退出在後台時,是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,就是在下次啟動程序時,直接從內存啟
動,不需要重新讀取資源到內存里。所以,何必要關掉它們抹殺這個安卓Android的優點呢?
還有一個,為什麼安卓Android一個應用看起來那麼耗內存?

目前廣泛釆用的Android上的應用是java,需要虛擬機。而安卓上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機。
這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。
但是最新的ART模式,在未來就是解決很多這些問題的鑰匙。

以上這些設計確保了安卓Android的穩定性,正常情況下最多單個程序崩潰,但整個系統不會崩潰,也永遠沒有內存不足的提示出現。

總想保留更多的內存要因系統而異,對安卓來說實際上此舉并不一定會提升速度,相反卻喪失了程序啟動快的這一系統特色,很沒必要。
真正需要關心的,如前面提到的是那些已經退出到後台但是帶服務的應用,但此類應用也要仔細甄別,也不是一刀切死的。不小心把手機功能也切掉,
內存更干淨了!但有意思嗎?
祝大家玩機愉快,這系統開十天半個月都沒問題。
再來詳細分析開了大程序或者開了好幾個程序之後切換會變慢的原因:

1.如大程序A已經開啟,占用70%內存;如果再想運行一個B,需要50%的內存。則就需要一個將A從內存中釋放或者壓縮的過程,所以表現出來的就是
慢一會兒了。
2.ABCDE共占用內存80%,運行新程序Z需要 20%的內存。系統內存因為不會有剩余0的時候,也就是應該剩一部分空閑內存。那麼就需要從A~E這幾個
程序中選擇一個或者幾個來關閉。這一過程也需要耗費系統資源,所以會慢一會兒。
以上這些都是再正常不過的現象了。
建議:
1.你手動去殺進程清理內存的時候,如按多任務鍵後到里面去清,就是替系統在釋放內存,就算你不殺,在需要內存的時候系統也會自動釋放。
單純地自動殺進程的不要也罷。

2.在後台不運行的程序(沒服務的),即使不殺也不會耗電。在後台運行的(有服務的)程序,如後台放歌,自然需要耗電。

3.不是說殺進程沒用,不然就不會有綠色守護(更進一步深入自啟動管理)之類的了。哪個帶服務耗電、哪個後台一直在運行,看服務就能看出來。
但是不能盲目地亂殺,把手機的功能殺沒了也就歇菜了。

4.如果運作中的APP你只是切換出去(按小房子鍵),那麼自然會耗電,因為程序還在運行中。有時候你清楚地知道就是需要這個樣子的除外。