Android中proc/meminfo的詳解(原)

來源:互聯網
上載者:User

標籤:

今天在寫到擷取手機可用記憶體空間的總大小的時候,通過下面的方法去擷取的時候,發現該方法最低支援的版本是16,這顯然是不可取的。

1 public static long getTotalSpace(Context ctx) {   2      //1.建立ActivityManager對象 3          ActivityManager am = (ActivityManager)4          ctx.getSystemService(Context.ACTIVITY_SERVICE);5      //2 擷取封裝記憶體資訊的對象6      MemoryInfo memoryInfo = new MemoryInfo(); //對對象賦值7      am.getMemoryInfo(memoryInfo);8     return memoryInfo.totalMem;9 }

經查閱資料後,通過讀取proc/meminfo的資料,發現第一行就是我想要的可用記憶體空間的總大小,通過流的形式讀取了想要的記憶體空間的總大小

 1 try { 2             FileReader fileReader = new FileReader("proc/meminfo"); 3             BufferedReader br = new BufferedReader(fileReader); 4  5             String readLine = br.readLine();// 讀取一行之後剛好是TotalMem的大小 6  7             // 對讀取到的字串進行ASCII值的匹配,擷取到需要的記憶體空間的大小 8             char[] charArray = readLine.toCharArray(); 9 10             // 通過StingBuffer將可用空間的 總大小串起來11             StringBuffer sb = new StringBuffer();12             for (char c : charArray) {13                 if (c >= ‘0‘ && c <= ‘9‘) {14                     sb.append(c);15                 }16             }17             //將sb轉換成字串,同時注意到資料庫檔案中的單位是kB,為了統一方便使用,轉換成位元組為單位的18             return Long.parseLong(sb.toString())*1024;19 20   } catch (Exception e) {21             e.printStackTrace();22   }

  然而不禁對proc/meminfo中的其他資料產生了資訊,都代表什麼意思?

通過adb shell切換到linux環境下,切換到該目錄下,通過cat meminfo得到如下資訊

當然你可以在DDMS中找到相應的檔案路徑,匯出來,用記事本開啟查看,基本是一樣的。

針對這些其他資料,查閱資料後,各自的解釋如下:

MemTotal: 所有可用RAM大小(即實體記憶體減去一些預留位和核心的二進位代碼大小)MemFree: LowFree與HighFree的總和,被系統留著未使用的記憶體Buffers: 用來給檔案做緩衝大小Cached: 被高速緩衝儲存空間(cache memory)用的記憶體的大小(等於 diskcache minus SwapCache ).SwapCached:被高速緩衝儲存空間(cache memory)用的交換空間的大小,已經被交換出來的記憶體,但仍然被存放在swapfile                    中。用來在需要的時候很快的被替換而不需要再次開啟I/O連接埠。Active: 在活躍使用中的緩衝或高速緩衝儲存空間分頁檔的大小,除非非常必要否則不會被移作他用.Inactive: 在不經常使用中的緩衝或高速緩衝儲存空間分頁檔的大小,可能被用於其他途徑.HighTotal:HighFree: 該地區不是直接映射到核心空間。核心必須使用不同的手法使用該段記憶體。LowTotal:LowFree: 低位可以達到高位記憶體一樣的作用,而且它還能夠被核心用來記錄一些自己的資料結構。Among many     other things, it is where everything from the Slab is allocated. Bad things happen when you’re out      of lowmem.SwapTotal: 交換空間的總大小SwapFree: 未被使用交換空間的大小Dirty: 等待被寫回到磁碟的記憶體大小。Writeback: 正在被寫回到磁碟的記憶體大小。AnonPages:未映射頁的記憶體大小Mapped: 裝置和檔案等映射的大小。Slab: 核心資料結構緩衝的大小,可以減少申請和釋放記憶體帶來的消耗。SReclaimable:可收回Slab的大小SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)PageTables:管理記憶體分頁頁面的索引表的大小。NFS_Unstable:不穩定頁表的大小VmallocTotal: 可以vmalloc虛擬記憶體大小VmallocUsed: 已經被使用的虛擬記憶體大小。VmallocChunk: largest contigious block of vmalloc area which is free

 個人覺得上述的總結還是比較好的,這裡引用下,作為一個擴充。。。

 

Android中proc/meminfo的詳解(原)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.