當前位置:首頁 » 安卓系統 » android內存釋放

android內存釋放

發布時間: 2023-01-15 15:41:20

㈠ 如何管理Android手機剩餘內存

大家知道要如何管理Android手機剩餘內存嗎?管理Android手機剩餘內存有什麼方法?下面一起來看看!

其實大家不用那麼在意android手機剩餘內存的大小。

很多人都是把使用其他系統的習慣帶到了android手機上,不是所有的智能手機系統都一樣的。android大多數應用沒有退出的設計其實是有道理的,這和系統對進程的調度機制有關系。如果你知道java,就能更清楚這機制了。其實和java的垃圾回收機制類似,系統有一個規則來回收內存。進行內存調度有個閥值,只有低於這個值系統才會按一個列表來關閉用戶不需要的東西。當然這個值默認設置得很小,所以你會看到內存老在很少的數值徘徊。但事實上他並不影響速度。相反加快了下次啟動應用的速度。這本來也是android的優勢之一,如果人為去關閉進程,沒有太大必要。特別是自動關進程的軟體。

為什麼內存少的時候運行大型程序會慢呢?

其實很簡單,在內存剩餘不多時打開大型程序,會觸發系統自身的調進程調度策略,這是十分消耗系統資源的操作,特別是在一個程序頻繁向系統申請內存的時候。這種情況下系統並不會關閉所有打開的進程,而是選擇性關閉,頻繁的調度自然會拖慢系統。

進程管理軟體到底還有存在的價值嗎?

其實還是有的,在運行大型程序之前,你可以手動關閉一些進程釋放內存,可以顯著的提高運行速度。但一些小程序,完全可交由系統自己管理。很多朋友還有個疑問,如果不關程序是不是會更耗電?這里也解釋一下,android的應用在被切換到後台時,它其實已經被暫停了,並不會消耗cpu資源,只保留了運行狀態。所以為什麼有的程序切出去重新進入,還會到主界面。但是,一個程序如果想要在後台處理些東西,如音樂播放,它就會開啟一個服務,服務可在後台持續運行,所以在後台耗電的也只有帶服務的應用了。這個在進程管理軟體里能看到,名字是service。所以沒有帶服務的應用在後台是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,下次啟動程序時,會更快,因為不需要讀取界面資源,何必要關掉他們抹殺這個android的優點呢?

為什麼android應用看起來那麼耗內存?

大家知道,android上的應用是java,當然需要虛擬機,而android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機。這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。

至於為什麼開了大程序或者開了好幾個程序之後切換會變慢,具體分析如下:

已經開啟了一個大程序,佔用70%內存,如果再想運行一個程序,此時還需要50%的內存,則就需要一個從大程序佔用的內存中釋放或者壓縮的過程,所以表現出來的就是慢一會兒。

已經開啟了幾個程序共佔用內存80%,運行新程序時又需要20%的內存,系統內存因為沒見過剩餘0的時候,也就是應該剩一部分空閑內存,那麼就需要從之前開啟的這幾個程序中選擇一個或者幾個來關閉,這一過程也需要耗費系統資源,所以會慢一會兒。也就是說你手動去結束程序的時候,就是替系統在釋放內存,就算你不去結束,在需要內存的時候系統也會自動結束程序釋放內存。

不在後台運行的程序(沒服務的),即使不結束也不會耗電。在後台運行的(有服務的`)程序,如一些播放器或實時監控的軟體,自然會耗電。這就說明結束進程並不是沒用,我們只需要看哪個帶服務耗電哪個程序後台一直在運行,看服務就能看出來,這樣的軟體如果用不到的時候就結束了吧。

以QQ舉例,正常的退出,會在進程管理里留下qq的運行過的狀態,但不耗電不佔 cpu,如果你只是切換出去(按房子鍵而不是退出)那麼自然會耗電,因為程序還在運行,QQ還在線呢。

這里就有個要注意的地方了,雖然房子鍵和那個返回鍵都可以將程序切換出去,但是兩者的效果差異是很大的,返回鍵可以視作程序已經退出了,而按房子鍵,則是將程序切換到了後台來運行,軟體並沒有退出哦!

以上這些設計都是為了確保了android的穩定性,正常情況下最多單個程序崩潰,但整個系統不會崩潰,也永遠沒有內存不足的提示出現。大家可能是被windows毒害得太深了,總想保留更多的內存,但實際上這並不一定會提升速度,相反卻喪失了程序啟動快的這一系統特色,得不償失。大家不妨換種觀念習慣來使用android系統。


㈡ Android系統內存管理

部分內容出至林學森的Android內核設計思想。
Android官網內存管理
部分出至 https://www.jianshu.com/p/94d1cd553c44

Android本質是Linux所以先從Linux說起。

Linux的內存管理為系統中所有的task提供可靠的內存分配、釋放和保護機制。
核心:
虛擬內存
內存分配與釋放
內存保護

將外存儲器的部分空間作為內存的擴展,如從硬碟劃出4GB大小。
當內存資源不足時,系統按照一定演算法自動條形優先順序低的數據塊,並把他們存儲到硬碟中。
後續如果需要用到硬碟中的這些數據塊,系統將產生「缺頁」指令,然後把他們交換回內存中。
這些都是由操作系統內核自動完成的,對上層應用」完全透明「。

每個進程的邏輯地址和物理地址都不是直接對應的,任何進程都沒辦法訪問到它管轄范圍外的內存空間——即刻意產生的內存越界與非法訪問,操作系統也會馬上阻止並強行關閉程序,從而有力的保障應用程序和操作系統的安全和穩定。

一旦發現系統的可用內存達到臨界值,機會按照優先順序順序,匆匆低到高逐步殺掉進程,回收內存。
存儲位置:/proc/<PID>/oom_score
優先順序策略:
進程消耗的內存
進程佔用的CPU時間
oom_adj(OOM權重)

Android平台運行的前提是可用內存是浪費的內存。它試圖在任何時候使用所有可用的內存。例如,系統會在APP關閉後將其保存在內存中,以便用戶可以快速切換回它們。出於這個原因,Android設備通常運行時只有很少的空閑內存。在重要系統進程和許多用戶應用程序之間正確分配內存內對存管理是至關重要。
Android有兩種主要的機制來處理低內存的情況:內核交換守護進程(kernel swap daemon)和低內存殺手(low-memory killer)。

當用戶在APP之間切換時,Android會在最近使用的(LRU)緩存中保留不在前台的APP,即用戶看不到的APP,或運行類似音樂播放的前台服務。如果用戶稍後返回APP,系統將重用該進程,從而使APP切換更快。
如果你的APP有一個緩存進程,並且它保留了當前不需要的內存,那麼即使用戶不使用它,你的APP也會影響系統的整體性能。由於系統內存不足,它會從最近使用最少的進程開始殺死LRU緩存中的進程。該系統還負責處理佔用最多內存的進程,並可以終止這些進程以釋放RAM。
當系統開始終止LRU緩存中的進程時,它主要是自底向上工作的。系統還考慮哪些進程消耗更多的內存,從而在終止時為系統提供更多的內存增益。你在LRU列表中消耗的內存越少,你就越有可能留在列表中並能夠快速恢復。

為了滿足RAM的所有需求,Android嘗試共享RAM來跨進程通信。它可以做到以下方式:

Android設備包含三種不同類型的內存:RAM、zRAM和storage。
注意:CPU和GPU都訪問同一個RAM。

內存被拆分成頁。通常每頁有4KB的內存。
頁面被認為是空閑的或已使用的。
空閑頁是未使用的RAM。
已使用頁是系統正在積極使用的RAM,分為以下類別:

干凈的頁面(Clean pages)包含一個文件(或文件的一部分)的一份精確副本存在存儲器上。當一個干凈的頁面不再包含一個精確的文件副本(例如,來自應用程序操作的結果)時,它就變成了臟頁。可以刪除干凈的頁,因為它們始終可以使用存儲中的數據重新生成;不能刪除臟頁(Dirty pages),否則數據將丟失。

內核跟蹤系統中的所有內存頁。

當確定一個應用程序正在使用多少內存時,系統必須考慮shared pages。APP訪問相同的服務或庫將可能共享內存頁。例如,Google Play Services 和一個游戲APP可能共享一個位置服務。這使得很難確定有多少內存屬於這個服務相對於每個APP。

當操作系統想要知道所有進程使用了多少內存時,PSS非常有用,因為頁面不會被多次計數。PSS需要很長時間來計算,因為系統需要確定哪些頁面是共享的,以及被有多少進程。RSS不區分共享頁面和非共享頁面(使計算速度更快),更適合於跟蹤內存分配的更改。

內核交換守護進程(kswapd)是Linux內核的一部分,它將使用過的內存轉換為空閑內存。當設備上的空閑內存不足時,守護進程將變為活動狀態。Linux內核保持低和高的可用內存閾值。當空閑內存低於低閾值時,kswapd開始回收內存。當空閑內存達到高閾值,kswapd將停止回收內存。
kswapd可以通過刪除干凈的頁面來回收干凈的頁面,因為它們有存儲器支持並且沒有被修改。如果進程試圖定址已刪除的干凈頁,則系統會將該頁從存儲器復制到RAM。此操作稱為請求分頁。

kswapd將緩存的私有臟頁(private dirty pages)和匿名臟頁(anonymous dirty pages)移動到zRAM進行壓縮。這樣做可以釋放RAM中的可用內存(空閑頁)。如果進程試圖觸摸zRAM中臟頁,則該頁將被解壓縮並移回RAM。如果與壓縮頁關聯的進程被終止,則該頁將從zRAM中刪除。
如果可用內存量低於某個閾值,系統將開始終止進程。

lmkd實現源碼要在system/core/lmkd/lmkd.c。
lmkd會創建名為lmkd的socket,節點位於/dev/socket/lmkd,該socket用於跟上層framework交互。

小結:
LMK_TARGET: AMS.updateConfiguration() 的過程中調用 updateOomLevels() 方法, 分別向/sys/mole/lowmemorykiller/parameters目錄下的minfree和adj節點寫入相應信息;
LMK_PROCPRIO: AMS.applyOomAdjLocked() 的過程中調用 setOomAdj() 向/proc/<pid>/oom_score_adj寫入oom_score_adj後直接返回;
LMK_PROCREMOVE: AMS.handleAppDiedLocked 或者 AMS.() 的過程,調用remove(),目前不做任何事,直接返回;

為了進一步幫助平衡系統內存並避免終止APP進程,可以Activity類中實現ComponentCallbacks2介面。提供的onTrimMemory()回調方法允許APP在前台或後台偵聽與內存相關的事件,然後釋放對象以響應應用程序生命周期或表明系統需要回收內存的系統事件。
onTrimMemory()回調是在Android 4.0(API級別14)中添加的。
對於早期版本,可以使用onLowMemory(),它大致相當於TRIM_MEMORY_COMPLETE事件。

一個專門的驅動。(Linux Kernel 4.12 已移除交給kswapd處理)。
很多時候,kswapd無法為系統釋放足夠的內存。在這種情況下,系統使用onTrimMemory()通知APP內存不足,應該減少其分配。如果這還不夠,內核將開始終止進程以釋放內存,它使用低內存殺手(LMK)來完成這個任務。
為了決定要終止哪個進程,LMK使用一個名為oom_adj_score的「out of memory」分數來確定運行進程的優先順序,高分的進程首先被終止。
後台應用程序首先被終止,系統進程最後被終止。
下表列出了從高到低的LMK評分類別。第一排得分最高的項目將首先被殺死:

Android Runtime(ART)和Dalvik虛擬機使用分頁(Paging)和內存映射(mmapping)來管理內存。應用程序通過分配新對象或觸摸已映射頁面來修改內存都將保留在RAM中,並且不能被調出。應用程序釋放內存的唯一方式是垃圾收集器。

㈢ 如何清理釋放Android手機內存空間

方法是:
1、下載安裝手機管理軟體,如獵豹清理大師、或91手機助手,對緩存、系統、卸載殘留實現進一步清理;
2、需要對不常用的軟體進行卸載清理,釋放內存,可通過91手機助手、或獵豹清理大師,將應該軟體「移至SD卡」,釋放內存空間;
3、對手機瀏覽器進行設置,將下載位置改為保存到SD卡上;
4、進入拍照狀態,在拍照界面進入相機設置,將相片保存位設為「SD卡」。
5、微信清理,方法是:
微信保存的視頻在Tencent/MicroMsg中對應每個人的目錄下,
(1)
將手機連接到電腦。
(2)打開手機存儲卡,找到tencent/MicroMsg文件夾
(3)裡面有一個或者多個由一長串數字和字母組成的文件夾,與該手機登錄過的微信賬號一一對應。
(4)打開這些文件夾,video是視頻,image是緩存和保存的圖片,voice是語音。
需要的,保存到電腦上;不需要的,全部刪除,即可釋放好幾G的空間。
6、如果上述辦法仍不行,建議:做好手機資料備份,重置手機,恢復出廠設置,這一招相當管用、徹底!

㈣ android 清理內存的方法

  • 1.打開手機,找到手機的「設置」。

    • 2.找到「應用管理」,點擊進入。

      • 3.找到「全部」,點擊任意應用,然後清理應用中的「清理緩存」。

        • 4.所用手機應用都可以這樣來清理手機緩存的。

          備註:最簡單粗魯的辦法就是關機重啟手機,手機就不太卡了

        ㈤ 如何清理釋放Android手機內存空間

        另外還有一些程序像Widgets,動態壁紙和一些系統程序,如果安裝在SD卡根本無法正常工作,內存不足依然是讓很多用戶感到棘手的問題。
        不過Android作為一種優秀的移動操作系統,提供了幾種可以清理和釋放內存空間的辦法,我們總結了下面幾點希望可以幫助用戶解決燃眉之急。
        清理大型應用程序的緩存數據
        1、通過清理程序的緩存文件,釋放的內存空間會讓你喜出望外。
        2、進入手機設置選項,選擇設置應用程序管理應用程序。
        3、按一下Menu鍵,選擇「按大小排序」選項(如果是Android2.2手機先要選擇已下載標簽),然後就可以按照應用程序大小排列所有手機安裝的應用程序。
        4、點擊一款列表中的應用程序,如果程序有緩存文件可以顯示大小,直接點擊「清除緩存」選項就可以釋放這些緩存文件占據的空間。
        5、有一些應用程序的緩存文件可能多達數MB,比如GoogleMaps,Market,瀏覽器和相冊程序,清理這幾個程序的緩存文件就可以釋放相當可觀的空間。
        6、很多手機廠商都在旗下手機預裝了自己開發的UI程序,比如HTCSense,MOTOBLUR等,如果你打算使用LaunherPro或者ADW這樣的launcher程序替代HTCSense,你可以清理甚至刪除HTCSense的數據文件,這個操作可以讓你的手機多出幾十MB空間。
        7、另外AndroidMarket還提供一些自動清除緩存文件的應用程序,比如QuickAppCleanCache這款收費軟體。
        對於已經取得root許可權的手機用戶,可以從Market下載CacheCleaner,CacheMate和MoveCache這些程序來快速方便的清除程序緩存文件。
        刪除那些你從來不用或者很少使用的應用程序
        這是很多用戶都會面對的問題,默默忍受著手機內存不足的報警,甚至犧牲系統性能,就是捨不得刪除那些從來不用或者極少使用的應用程序,這可能也是一種強迫症。
        刪除這些程序你會發現手機從此海闊天空,而且你沒有任何損失。
        移動所以可以移動的應用程序數據到SD卡
        運行Android2.2系統的手機支持安裝應用程序到SD卡,確保檢查所有你安裝的應用程序如果支持appstoSD卡功能一定要移動到SD卡,對於一些大型軟體特別是游戲程序節省的容量相當可觀。
        不過一定要注意Widgets程序,捆綁Widgets的程序,以及動態壁紙程序和那些需要在後台運行並且和系統進行交互的應用程序不要移動到SD卡存儲,否則程序可能無法正常工作。
        如果覺得每個程序單獨設置太麻煩,可以藉助Apps2SD和SDMove這樣的程序簡化*********程。

        ㈥ android開發 怎麼釋放activity的全部內存

        假如現在有三個activity,分別是main,a 和b .
        a和b都是需要很大內存的,在main中打開a或b,在a或b中直接按返回鍵,或者直接調用finish,回到main後通過update heap觀察剛才打開的activity佔用的資源可以很快釋放,如果是setResul後再調用finish回到main,發現內存被釋放的事件要稍微久一些。
        第二個問題,在main中打開a,然後在a中startActivity打開b,然後a.finish,這個時候觀察a的內存並沒有釋放。如果在b中調用finish返回main後,a和b的內存就會被釋放掉。

        ㈦ Android手機清理內存的方法

        和PC用戶一樣智能手機用戶也會遇到手機存儲不足的問題,對於Android手機來說因為系統不支持安裝程序到SD卡,手機配置的存儲容量也有限,很多用戶都碰到過安裝程序太多系統內存不足的問題。雖然Android2.2系統開始已經支持Apps2SD功能,但是很多用戶使用後發現Android2.2系統下仍然有很多應用程序無法安裝到SD卡,即可程序支持移動到SD卡,但是還會保留一部分系統文件和隱私文件在手機內存里。另外還有一些程序像Widgets,動態壁紙和一些系統程序,如果安裝在SD卡根本無法正常工作,內存不足依然是讓很多用戶感到棘手的問題。不過Android作為一種優秀的移動操作系統,提供了幾種可以清理和釋放內存空間的辦法,我們總結了下面幾點希望可以幫助用戶解決燃眉之急。

        清理大型應用程序的緩存數據。

        1、通過清理程序的緩存文件,釋放的內存空間會讓你喜出望外。

        2、進入手機設置選項,選擇設置>應用程序>管理應用程序。

        3、按一下Menu鍵,選擇「按大小排序」選項(如果是Android2.2手機先要選擇已下載標簽),然後就可以按照應用程序大小排列所有手機安裝的應用程序。

        4、點擊一款列表中的應用程序,如果程序有緩存文件可以顯示大小,直接點擊「清除緩存」選項就可以釋放這些緩存文件占據的空間。

        5、有一些應用程序的緩存文件可能多達數MB,比如GoogleMaps,Market,瀏覽器和相冊程序,清理這幾個程序的緩存文件就可以釋放相當可觀的空間。

        6、很多手機廠商都在旗下手機預裝了自己開發的UI程序,比如HTCSense,MOTOBLUR等,如果你打算使用LaunherPro或者ADW這樣的launcher程序替代HTCSense,你可以清理甚至刪除HTCSense的數據文件,這個操作可以讓你的'手機多出幾十MB空間。

        7、另外AndroidMarket還提供一些自動清除緩存文件的應用程序,比如QuickAppCleanCache這款收費軟體。對於已經取得root許可權的手機用戶,可以從Market下載CacheCleaner,CacheMate和MoveCache這些程序來快速方便的清除程序緩存文件。

        刪除那些你從來不用或者很少使用的應用程序這是很多用戶都會面對的問題,默默忍受著手機內存不足的報警,甚至犧牲系統性能,就是捨不得刪除那些從來不用或者極少使用的應用程序,這可能也是一種強迫症。刪除這些程序你會發現手機從此海闊天空,而且你沒有任何損失。移動所以可以移動的應用程序數據到SD卡運行Android2.2系統的手機支持安裝應用程序到SD卡,確保檢查所有你安裝的應用程序如果支持appstoSD卡功能一定要移動到SD卡,對於一些大型軟體特別是游戲程序節省的容量相當可觀。

        不過一定要注意Widgets程序,捆綁Widgets的程序,以及動態壁紙程序和那些需要在後台運行並且和系統進行交互的應用程序不要移動到SD卡存儲,否則程序可能無法正常工作。如果覺得每個程序單獨設置太麻煩,可以藉助Apps2SD和SDMove這樣的程序簡化操作過程。對於那些動手能力比較強的用戶可以通過網上的教程設置應用程序默認安裝到SD卡,這樣就可以一勞永逸。

        ㈧ 如何清理釋放Android手機內存空間

        方法是:
        1、下載安裝手機管理軟體,如獵豹清理大師、或91手機助手,對緩存、系統、卸載殘留實現進一步清理;
        2、需要對不常用的軟體進行卸載清理,釋放內存,可通過91手機助手、或獵豹清理大師,將應該軟體「移至SD卡」,釋放內存空間;
        3、對手機瀏覽器進行設置,將下載位置改為保存到SD卡上;
        4、進入拍照狀態,在拍照界面進入相機設置,將相片保存位設為「SD卡」。
        5、微信清理,方法是:
        微信保存的視頻在Tencent/MicroMsg中對應每個人的目錄下,
        (1) 將手機連接到電腦。
        (2)打開手機存儲卡,找到tencent/MicroMsg文件夾。
        (3)裡面有一個或者多個由一長串數字和字母組成的文件夾,與該手機登錄過的微信賬號一一對應。
        (4)打開這些文件夾,video是視頻,image是緩存和保存的圖片,voice是語音。
        需要的,保存到電腦上;不需要的,全部刪除,即可釋放好幾G的空間。
        6、如果上述辦法仍不行,建議:做好手機資料備份,重置手機,恢復出廠設置,這一招相當管用、徹底!

        熱點內容
        mysql同步存儲過程 發布:2025-07-04 05:14:32 瀏覽:659
        安卓手機如何控制空調 發布:2025-07-04 05:09:06 瀏覽:153
        新潔爾滅用於物體表面怎麼配置 發布:2025-07-04 05:03:28 瀏覽:828
        生活中的雲伺服器 發布:2025-07-04 05:01:55 瀏覽:742
        三星g6700c原始密碼是多少 發布:2025-07-04 04:49:41 瀏覽:724
        網頁編程代碼 發布:2025-07-04 04:47:25 瀏覽:803
        發消息時用到什麼密碼 發布:2025-07-04 04:41:47 瀏覽:978
        3個密碼箱能裝多少錢 發布:2025-07-04 04:39:36 瀏覽:9
        android資料庫的操作 發布:2025-07-04 04:37:35 瀏覽:167
        登錄時設置密碼保存在哪裡 發布:2025-07-04 04:34:23 瀏覽:535