加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Android 查看手机内存使用情况(/proc/meminfo) 

(2017-08-15 18:06:21)
分类: androidios
  Android开发和测试中,有时候需要获取手机的总内存和可用内存大小,这个该如何实现呢?

   我们可以通过读取文件"/proc/meminfo"的信息获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)方法可以获取当前的可用Memory量。

   "/proc/meminfo"文件记录了android手机的一些内存信息,在命令行窗口里输入"adb shell",进入shell环境,输入"cat /proc/meminfo"即可在命令行里显示meminfo文件的内容具体如下所示。

  1. cat /proc/meminfo  
  2. MemTotal:        2806760 kB  
  3. MemFree:          197620 kB  
  4. Buffers:           56696 kB  
  5. Cached:           909360 kB  
  6. SwapCached:            0 kB  
  7. Active:          1406036 kB  
  8. Inactive:         476540 kB  
  9. Active(anon):     924492 kB  
  10. Inactive(anon):    11664 kB  
  11. Active(file):     481544 kB  
  12. Inactive(file):   464876 kB  
  13. Unevictable:        7832 kB  
  14. Mlocked:              80 kB  
  15. SwapTotal:             0 kB  
  16. SwapFree:              0 kB  
  17. Dirty:                 0 kB  
  18. Writeback:             0 kB  
  19. AnonPages:        924252 kB  
  20. Mapped:           217876 kB  
  21. Shmem:             11884 kB  
  22. Slab:             306808 kB  
  23. SReclaimable:      78768 kB  
  24. SUnreclaim:       228040 kB  
  25. KernelStack:       33360 kB  
  26. PageTables:        34480 kB  
  27. NFS_Unstable:          0 kB  
  28. Bounce:                0 kB  
  29. WritebackTmp:          0 kB  
  30. CommitLimit:     1403380 kB  
  31. Committed_AS:   93553728 kB  
  32. VmallocTotal:   251658176 kB  
  33. VmallocUsed:      110656 kB  
  34. VmallocChunk:   251386276 kB  

MemTotal: 所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)。

MemFree:被系统留着未使用的内存。

Buffers: 用来给文件做缓冲的大小。

Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache ).

SwapCached:swap 缓存的大小,Android很少使用swap的,经常为0。被高速缓冲存储器(cache memory)用来交换空间的大小,用来在需要的时候很快的被替换而不需要再次打开I/O端口。

Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要,否则不会被移作他用。

Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径。

SwapTotal: 交换空间的总大小。

SwapFree: 未被使用交换空间的大小。

要获取android手机总内存大小,只需读取"/proc/meminfo"文件的第1行,并进行简单的字符串处理即可。

同时可以通过代码获取总内存和可用内存。

  1. private String getAvailMemory() {// 获取android当前可用内存大小   
  2.   
  3.     ActivityManager am (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);  
  4.     MemoryInfo mi new MemoryInfo();  
  5.     am.getMemoryInfo(mi);  
  6.     //mi.availMem; 当前系统的可用内存   
  7.   
  8.     return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 将获取的内存大小规格化   
  9.  
  1. private String getTotalMemory()  
  2.     String str1 "/proc/meminfo";// 系统内存信息文件   
  3.     String str2;  
  4.     String[] arrayOfString;  
  5.     long initial_memory 0 
  6.   
  7.     try  
  8.         FileReader localFileReader new FileReader(str1);  
  9.         BufferedReader localBufferedReader new BufferedReader(  
  10.             localFileReader, 8192);  
  11.         str2 localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小   
  12.   
  13.         arrayOfString str2.split("\\s+");  
  14.         for (String num arrayOfString)  
  15.             Log.i(str2, num "\t");  
  16.          
  17.   
  18.         initial_memory Integer.valueOf(arrayOfString[1]).intValue() 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte   
  19.         localBufferedReader.close();  
  20.   
  21.     catch (IOException e)  
  22.      
  23.     return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化   

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有