當前位置:首頁 » 安卓系統 » android內存文件

android內存文件

發布時間: 2023-06-14 13:52:15

A. 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中,並且不能被調出。應用程序釋放內存的唯一方式是垃圾收集器。

B. Android手機內存卡中的文件夾分別代表什麼軟體

SD卡中的文件夾,基本上都是系統軟體和第三方軟體的數據存儲的地方。一般看文件夾名稱就能看出是屬於哪個軟體的。比如tencent,就是騰訊的英文名,自然就是QQ和微信的數據所在地。微信傳送的圖片什麼的,都在這里。

另外,常見的文件夾名稱及其作用如下:
一、系統數據類——系統文件存儲相關文件夾

1、.android_secure:官方app2sd的產物,存儲了相關的軟體使用認證驗證,刪除之後SD卡中的軟體將無法使用。
2、Android:存放重要的程序數據,比如google:map的地圖緩存,誤刪掉後地圖還需重新下載。
3、backups:包含重要的備份文件,比如聯系人導出到SD卡會導入到此文件夾。
4、bugtogo:系統出現問題的時候會形成一些報告文件,存放在此文件夾。
5、data:緩存數據文件夾,與Android類似。例如,「截圖助手」截圖保存在datacom.edwardkim.android.screenshotitfullscreenshots里。
6、LOST.DIR:卡上丟失或出錯的文件會移動到這里,此目錄刪了會自動生成。
7、SystemAppBackup:SystemAppremove(深度卸載)備份系統文件後,備份文件保存的目錄。
8、bugreports:升級系統或刷機,系統和程序發生兼容錯誤報告列表(包括內存使用全部內容)將保存在這個文件,重起機器可以刪除。
9、.keepsafe:隱藏類的軟體、加密保存文件地址存放於此。
10、.thumbs:瀏覽或使用某一軟體,以及使用某一文件夾後用於記錄次數和內容的文件,隨機產生,需要定期不斷清除,長時間不清理會大量佔用儲存卡的有效空間。
11、openfeint:打開聯接網路後的一個啟動程序,它廣泛植入移動類平台發布的軟體或游戲,是更新下載或評論反饋信息的記錄地址,可刪除。
12、com:播放類軟體在收看播放影視節目生成的文件將存放於此,可以對製作方反映回饋信息,可以刪除。
13、Download(download):大寫字母的是網路聯接下載文件目錄,小寫字母的是手機自身(藍牙,近場等)存放下載傳輸文件,不要誤刪。

二、系統工具類——系統自帶工具相關文件夾
1、albumart:音樂專輯封面的緩存文件夾。
2、albums:相冊縮略圖的緩存文件夾。
3、cmp:音樂的緩存文件夾。
4、Playlists:播放列表的緩存文件夾。
5、DCIM:相機隨機緩存文件夾,記錄功能設置的參數,需要及時清理。一些第三方相機軟體拍出的相片也會保存在這里,比如360或暈影相機等。
6、VPN:VPN數據的緩存目錄。
7、Mydocuments:手機啟用各種程序任務記錄的文檔,需要定期清除,長時間不清理會佔用SD卡較大內存。
8、.nomedia:手機中隱藏的音頻、圖片文件夾都會在這里顯示,可以自設在相關文件夾中。
9、media:使用電話通話錄音軟體或在線瀏覽視頻等媒體產生的音頻文件記錄存檔將保存在此。
10、.medieval_software:啟用藍牙傳輸軟體時,記錄任務保存文件的目錄。
11、extracted:解壓縮軟體默認的解壓目錄。

三、第三方應用類
1、.mobo:Moboplayer的緩存文件。
2、.QQ:QQ的緩存文件,需要定期清除。
3、.quickoffice:quickoffice的緩存文件。
4、.switchpro:switchprowidget(多鍵開關應用)的緩存文件。
5、.ucdlres:UC迅雷的緩存文件。
6、:掌上網路、網路輸入法之類程序的緩存文件夾。
7、etouch:易行的緩存文件夾。
8、documents:DocumentsToGo的相關文件夾。
9、gameloft:gameloft游戲數據包存放的文件夾。
10、handcent:handcent(超級簡訊)數據文件夾。
11、handyCurrency:貨幣匯率相關的文件夾,裝了handycalc(科學計算器)之後才會有。
12、ireader:ireader的緩存文件夾。
13、KingReader:開卷有益的緩存文件夾:下載的文件和應用都在這兒:刪除時留意看清
14、LazyList:Applanet的緩存目錄,慎重使用。
15、moji:墨跡天氣的緩存目錄。
16、MusicFolders:poweramp產生的緩存文件夾。
17、openfeint:openfeint的緩存文件夾。
18、Picstore:圖片瀏覽軟體建立的一個目錄。
19、renren:人人網客戶端的緩存文件夾。
20、screenshot:截屏圖片保存的目錄。
21、ShootMe:shootme截屏後圖片文件保存的目錄。
22、SmartpixGames:SmartpixGames出品游戲的緩存文件夾,比如Jewellust。
23、sogou:搜狗拼音輸入法的隨機緩存文件夾,可以刪除。
24、SpeedSoftware:RE文件管理器的緩存文件夾。
25、TalkingFriends:talkingtom(會說話的tom貓)錄制的視頻文件所保存的目錄。
26、Tencent:騰訊軟體的緩存目錄,比如QQ。(與上面的.QQ文件夾並不相同)
27、TitaniumBackup:鈦備份備份的程序所保存的目錄。
28、TunnyBrowser:感覺是海豚瀏覽器的緩存目錄,但為什麼叫這個名字?金槍魚瀏覽器...。.
29、UCDLFiles:UC迅雷下載文件的保存目錄。
30、UCDownloads:UC瀏覽器下載文件緩存的保存目錄。
31、VIE:Vignette(暈影相機)的緩存目錄。
32、yd_historys:有道詞典搜索歷史的緩存目錄
33、yd_speech:有道詞典單詞發音的緩存目錄。
34、youmicache:刪掉後還會自動生成,悠米廣告的緩存目錄,廣告程序內嵌在其程序中。
35、Glu:Glu系列游戲的資料包存放地,如3D獵鹿人,勇猛二兄弟等。
36、apadqq-images:QQforpad的緩存目錄。
37、DunDef:地牢守護者的數據包。
38、KuwoMusic:酷我音樂的相關文件夾。
39、MxBrowser:遨遊的緩存目錄。
40、Camera360:相機camera360的隨機緩存目錄,可以定期清除。
41、TTPod:天天動聽的緩存目錄。
42、downloaded:刷了MIUI,升級後的ZIP刷機包,保存在downloaded_rom里。
43、.estrongs:當你使用了ES文件管理器解壓文件,會有這個緩存記錄。它反映使用進程,可以刪除。
44、silentR:用了後台錄音軟體,自生的音頻文件夾,子文件夾phoneCalls,定期管理清除
45、3D-compass:這是使用實景指南針軟體,生成的景象圖片(圖像和數字比較詳細)文件夾,可以清除。
46、PDF:可移植文檔格式,Pdf閱讀器存儲文件夾。
47、Zidanyou:是字典的詞庫文件儲存,刪除了要重新下載詞庫。
48、Callrecords:採用第三方強制雙向錄音軟體(手機未root),音頻文件保存。
49、VPlayerPro:是MOBO等視頻播放器使用後的記錄定期刪除。
50、BeWeather(Videos):是氣象類軟體(如黑莓天氣.。.等)附加下載音頻或動畫圖標的儲存地址,刪除了會無圖無聲顯示。
51、thumbnails:用第三方播放器觀看手持移動類視頻媒體時,存放點擊暫停、隨機截圖以及文件儲存時產生的內容。
52、iQuran(meta2):可蘭經瀏覽文本和音頻的儲存文件。
53、Autodesk:手機系統自帶存儲器命令生成文件夾:儲存圖像或編寫文稿,可以查看、備份或者刪除。
54、PixlrOMatic:後期特效處理圖片軟體Pixlo,儲存文件夾,打開可以預覽看效果。
55、mapbar:圖吧導航地圖存放文件,有必須主文件和不同地區具體地圖,主文件刪掉要重下!
56、antTTS:是使用了高德導航選擇語音種類導航、語種的下載地址,刪掉了語音提示會丟失。
57、kingsoft:金山詞霸專用文件夾下載儲存詞庫、更新拓展文匯(官方發布修正補充)。
58、NightVisionCamera:夜間拍照相機相片存放的地址。
59、DSA:電子狗專用夾,收錄各地區道路探頭監控位置信息,會定期更新。已測試配合高德、凱立德提前預警,效果不錯。
60、apexlauncher:尖端桌面啟動器文件夾,位置在andriod/data/,放置桌面設置備份bak文件。

C. 怎麼查看安卓手機自身內存里的文件夾

1、首先在手機中,打開可以查看文件的軟體,如下圖所示。

熱點內容
我的世界怎麼進2s2t伺服器 發布:2025-02-07 23:08:47 瀏覽:924
丁霞訪問 發布:2025-02-07 22:56:19 瀏覽:855
java中set集合 發布:2025-02-07 22:43:34 瀏覽:31
播放這個wifi密碼是多少 發布:2025-02-07 22:34:54 瀏覽:100
視頻存儲時間長了有雪花 發布:2025-02-07 22:24:34 瀏覽:569
哈佛f7x怎麼區分配置 發布:2025-02-07 22:22:34 瀏覽:772
廣州python培訓 發布:2025-02-07 22:22:26 瀏覽:200
陸金所的交易密碼是什麼 發布:2025-02-07 22:19:25 瀏覽:321
如何刪除平板儲存密碼 發布:2025-02-07 22:10:29 瀏覽:748
php微信授權登錄 發布:2025-02-07 22:10:27 瀏覽:379