Android 程序 記憶體管理誤區

2021-09-20 08:47:05 字數 1746 閱讀 6741



乙個極其意外的習慣——程序全殺、禁止自啟動

記得剛剛開始用i5700時,我和很多人有著乙個一樣的習慣——全殺程序。i5700的ram很小,而我又有一邊開著uc一邊開著校內一邊開著ireader看書的惡習,通過諸如advanced task killer之類的軟體清理程序,看到空閒ram一下子變多的時候容易有一種虛幻的快感。

後來開始做android程式,特別是了解到android系統程序管理(特別是後台管理和自動釋放優先順序低的程序換取空閒ram)後,才開始明白,當乙個程式放到後台時,系統可能將資料儲存起來而讓程式進行休眠,或者僅僅執行部分服務,僅僅當收到相關的申請時才恢復部分程序,處理完之後結束程序而保留服務——這些都是自動處理的,也就是說,如果使用者執行的軟體都是按照android思想而設計的,那麼除了明確有退出按鍵的一部分大型程式外,其他程式是都可以執行後扔到後台不用再管了的,當某個程式需要更多ram時,系統會自動釋放掉一些不重要且最近沒有使用的程式;而當你開啟某個曾經開啟的程式時,系統會先檢查ram裡是不是有這個程式的部分程序,然後進行恢復,這樣可以更快開啟它。

當然了,如果手機本身ram很小而且cpu不給力,系統自然會很頻繁的終止程序釋放記憶體,這就使得許多小記憶體的手機用起來感覺一卡一卡的了。於是很多論壇都開始討論怎麼樣使得全殺過後空閒記憶體更大、怎樣禁止自動啟動某些程序——結果空閒ram確實大了,用起來反而更卡了——隨便切換個程式(如看書的時候來了個**)系統都要重新啟動幾乎所有相關的程序,怎麼能反應不遲鈍。

android用ram的方式,跟windows、wm、sybiam是兩回事。在android裡,ram被用滿了是件好事。它意味著你可以快速開啟之前開啟的軟體,回到之前的位置。所以android很有效的使用ram,很多使用者看到他們的ram滿了,就認為拖慢了他們的手機。而實際上,退出後重啟這些程式才真正拖慢了手機的響應。而且這些自動殺程序的軟體本身是個時刻活躍的程序,它始終在後台保持活躍使得cpu難以消停,反而增加了耗電量。

這個問題最終我覺得應該埋怨程式設計師。許多國內的android程式設計師編寫的程式根本就沒有對程序進行分類,總是試圖將所有程序都保留在記憶體裡(例如某著名手機瀏覽器)!這就使得這些程式即使放到後台了,它也不許系統對其程序進行釋放。wm、sybiam系統裡的記憶體管理沒有這麼智慧型,於是習慣了這種方法的程式設計師以及使用者就把這種記憶體管理方式和使用習慣用到了android上。所以這裡建議,對於很多國內軟體(一般都至少還是會有個退出按鈕的),用完之後還是按一下退出吧,而對於規範化的程式,以及系統自帶的那些程式(例如google的程式基本都沒有退出),用過之後放後台就好。

有意思的乙個例子——老爸和老媽

我的老爸是個準geek,i9000到手沒多久就開始了無盡的刷機和優化之旅。各種論壇上充滿了各種關於「優化」和「增加空閒記憶體」的帖子,他很聽從的裝了自動殺程序的軟體,刪了很多會自動啟動的google程式(地圖、gmail之類之類的),可是還會乙個勁問我的dhd空閒記憶體有多少,為什麼會比他的手機空閒記憶體跟我差不多但是我的會更流暢。

而我的母親對於手機之類的完全不怎麼了解,thunderbolt在她手裡更像是有**功能的遊戲機,如果乙個程式沒有明顯的退出按鈕,那她就完全不會退出,更不用說什麼禁止自動啟動什麼自動殺程序之類的東西了。於是當我爸發現老媽手機只有不到30mb的空閒ram可還是比他的i9000順暢,甚至此時還剛開啟切水果開玩的時候,他終究相信了——我媽比他更會用android手機。

在我向他詳細說明為什麼可以把程式扔到後台,為什麼不應該用那些亂七八糟的程序管理軟體之後,他試了三天,然後總算承認——他之前那些所謂優化,全是瞎折騰……

Android記憶體程序管理機制

參考文章 一 理論 android採取了一種有別於linux的程序管理策略,有別於linux的在程序活動停止後就結束該程序,android把這些程序都保留在記憶體中,直到系統需要更多記憶體為止。這些保留在記憶體中的程序通常情況下不會影響整體系統的執行速度,並且當使用者再次啟用這些程序時,提公升了程序...

Android記憶體程序管理機制

參考文章 一 理論 android採取了一種有別於linux的程序管理策略,有別於linux的在程序活動停止後就結束該程序,android把這些程序都保留在記憶體中,直到系統需要更多記憶體為止。這些保留在記憶體中的程序通常情況下不會影響整體系統的執行速度,並且當使用者再次啟用這些程序時,提公升了程序...

Android的記憶體,程序排程管理 (二)

在執行乙個程式時,按一下房子鍵就可以退到桌面,一般來說按一下退出鍵也可以退到桌面,這兩者有什麼區別呢?其實是有區別的,你應該根據自己的需要靈活選擇 按房子鍵,看起來似乎是退出了,但是其實這個軟體並沒有被關閉,而是轉為了 後台程式 指一般的軟體,不討論特別種類的軟體 按退出鍵,看起來也是退出沒錯,但這...