Android中proc/meminfo的详解(原)
今天在写到获取手机可用内存空间的总大小的时候,通过下面的方法去获取的时候,发现该方法最低支持的版本是16,这显然是不可取的。
public static long getTotalSpace(Context ctx) {
//1.创建ActivityManager对象
ActivityManager am = (ActivityManager)
ctx.getSystemService(Context.ACTIVITY_SERVICE);
//2 获取封装内存信息的对象
MemoryInfo memoryInfo = new MemoryInfo();
//3.对对象赋值
am.getMemoryInfo(memoryInfo);
return memoryInfo.totalMem;
}
经查阅资料后,通过读取proc/meminfo的数据,发现第一行就是我想要的可用内存空间的总大小,通过流的形式读取了想要的内存空间的总大小
try {
FileReader fileReader = new FileReader("proc/meminfo");
BufferedReader br = new BufferedReader(fileReader);
String readLine = br.readLine();// 读取一行之后刚好是TotalMem的大小
// 对读取到的字符串进行ASCII值的匹配,获取到需要的内存空间的大小
char[] charArray = readLine.toCharArray();
// 通过StingBuffer将可用空间的 总大小串起来
StringBuffer sb = new StringBuffer();
for (char c : charArray) {
if (c >= '0' && c <= '9') {
sb.append(c);
}
}
//将sb转换成字符串,同时注意到数据库文件中的单位是kB,为了统一方便使用,转换成字节为单位的
return Long.parseLong(sb.toString())*1024;
20 } catch (Exception e) {
e.printStackTrace();
}
然而不禁对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的详解(原)的更多相关文章
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- Android中Service的使用详解和注意点(LocalService)
Android中Service的使用详解和注意点(LocalService) 原文地址 开始,先稍稍讲一点android中Service的概念和用途吧~ Service分为本地服务(LocalServ ...
- Android中SurfaceView的使用详解
Android中SurfaceView的使用详解 http://blog.csdn.net/listening_music/article/details/6860786 Android NDK开发 ...
- Android中的windowSoftInputMode属性详解
这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下 在前面的一篇文章中 ...
- Android中Application类的详解:
Android中Application类的详解: 我们在平时的开发中,有时候可能会须要一些全局数据.来让应用中的全部Activity和View都能訪问到.大家在遇到这样的情况时,可能首先会想到自定义一 ...
- Android 中的消息传递,详解广播机制
--------------------------------------广播机制简介--------------------------------------------- Android中的广 ...
- Android中的sharedUserId属性详解
在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见,而我们可以使他们对其他的应用程序可见,这会使我们用到 ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android中数据库的操作流程详解
Android中数据库的操作方法: 1.Android平台提供了一个数据库辅助类来创建或打开数据库. 这个辅助类继承自SQLiteOpenHelper类.继承和扩展SQLiteOpenHelper类主 ...
随机推荐
- [原创]C#引用C++编译的dll
一.DllImportAttribute 1.属性介绍 using System; using System.Reflection; using System.Security; namespace ...
- 在ubuntu中安装psutil
环境:ubuntu 16.04 LTS + python 2.7/3.5共存 + psutil 4.3.0 1.sudo apt-get install python3-dev # 先把python3 ...
- Android数据存储方式
Android提供了5种方式存储数据: 1.使用SharedPreferences存储数据:它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中.只能在同一个 ...
- 如何通过命令行创建和设置一个MySQL用户
我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制.如何通过命令行的方式来创建并且设置一个MySQL用户呢? 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可 ...
- Bootstrap<基础四> 代码
Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...
- javadoc 生成自定义的标签
转自:http://www.blogjava.net/lishunli/archive/2010/01/12/309218.html Technorati 标记: tools 关键词 个性化地生成Ja ...
- XCode修改公司名称和作者名称
新建的文件最上方都会有一段类似如下的版权声明 // // ViewController.m // CBDemoProject001 // // Created by CB on 16/3/17. ...
- python导入cx_Oracle报错的问题!
import cx_Oracle 总是报错:ImportError: DLL load failed: 找不到指定的模块. 或者:ImportError: DLL load failed: %1 不是 ...
- 3D图形图像处理软件HOOPS介绍及下载
HOOPS 3D Application Framework(以下简称HOOPS)是建立在OpenGL.Direct3D等图形编程接口之上的更高级别的应用程序框架.不仅为您提供强大的图形功能,还内嵌了 ...
- Python笔记-集合,拷贝
对于列表,元组,集合的异同,有如下解释 #list ----> 允许重复的集合,修改# tuple ----> 允许重复的集合,不修改# set ----> 不允许重复的集合下面是示 ...