proc文件系统

来源:互联网 发布:isis软件使用方法 编辑:程序博客网 时间:2024/06/05 19:00
Android从本质上说是Linux,因此可以把Android当作Linux来访问,从而达到访问系统信息的目的:


proc文件系统(process进程吧应该)


……proc文件系统是Linux内核开发人员为了减少系统调用的复杂性而引入的一种特殊文件系统。
有了这种文件系统,用户只需要像查看文本文件一样就能够读取内核中的各种数据,给 开发人员和系统管理员带来很大的便利。


很多Linux常用命令都是依靠分析/proc目录下的文件来运行的,比如ls,ps等。。。


1、读取CPU和内存等信息。
分析/proc/cpuinfo这个文件,就能获得CPU信息。


adb shell


#cat/proc/cpuinfo




分析/proc/meminfo,就能获得内存信息


adb shell


#cat/proc/meminfo


####
MemTotal所有可用RAM大小94096KB
MemFreeLowFree与HighFree的总和,被系统留着未使用的内存1684KB
Buffers用来给文件做缓冲大小16KB
Cached被高速缓冲存储器(cache memory)用的内存大小27160KB等于diskcache minus SwapCache
SwapCached被高速缓冲存储器用的交换空间的大小0KB(已经被交换出来的内存,仍然被存放在swapfile中,用来在需要的时候很快的被替换而不需要再次打开I/O端口)
Active在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要,否则不会被移作他用35392KB
Inactive在不经常使用中的缓或高速缓冲存储器页面文件的大小,可被用于其它途径44180KB
Active(anon)26540KB
Inactive(anon)28244KB
Active(file)8852KB
Inactive(file)15936KB
Unevictable280KB
Mlocked0KB
SwapTotal交换空间的总大小0KB
SwapFree未被使用交换空间的总大小0KB
Dirty等待被写回到磁盘的内存大小0KB
Writeback正在被写回到磁盘的内存大小0KB
AnonPages未映射页的内存大小52688KB
Mapped设备和文件等映射的大小17960KB
Slab内核数据结构缓存的大小,可减少申请和释放内存带来的消耗3816KB
SReclaimable可收回Slab的大小936KB
SUnreclaim不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)2880KB
PageTables管理内存分页页面的索引表的大小5260KB
NFS_Unstable不稳定页表的大小0KB
Bounce0KB
WritebackTmp0KB
CommitLimit47048KB
Committed_AS1483784KB
VmallocTotal876544KB
VmallocUsed15456KB
VmallocChunk829444KB


####


**/**注:用Android SDK 的 ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)也能获得当前可用内存的大小


//**下面是用Android SDK的方法**//


ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.gerMemoryInfo(mi);//**mi.availMem;当前系统的可用内存
return Formatter.formatFileSize(getBaseContext(),mi.availMem);//将获取的内存大小规格化


//##下面是分析/proc/meminfo的方法:


String str1 = "/proc/meminfo";//系统内存信息文件
String str2;
String[] arrayOfString;
long initial_memory = 0;
try{
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(localFileReader , 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("//s+");
for(String num : arrayOfString){
Log.i(str2,num+"/t");
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue()*1024;//获得系统总内存,单位是KB,乘以1024转换为Byte
localBufferedReader.close();
}catch(IOException e ){
}
return Formatter.formatFileSize(getBaseContext() , initial_memory);//Byte转换为KB或者MB,内存大小规格化


如果使用Linux,可以看到/proc目录还有很多文件,你可以用man proc 命令来学习proc文件系统。
原创粉丝点击