如何获取 Android 设备的CPU核数,时钟频率以及内存大小

如何获取 Android 设备的CPU核数,时钟频率以及内存大小,第1张

DeviceYearClass的主要功能是根据CPU核数、时钟频率以及内存大小对设备进行分级。代码很简单,只包含两个类:DeviceInfo->获取设备参数,YearClass->根据参数进行分级。下表是Facebook公司提供的分级标准,其中Year栏表示分级结果

android程序获取SD卡目录的方法如下:

手机通过数据线连接电脑端,在计算机里会显示两个磁盘,一个是系统内存,另外一个就是SD卡内存,打开SD卡就可以找到文件目录。

也可以通过手机查找,打开手机应用程序,点击文件管理打开,然后打开所有文件。

接着打开”extSdCard“文件夹就是SD卡里的目录了。

getTotalPrivateDirty()就是获得自己进程所独占的内存

getTotalPss()意思就是假如有A,B,C,D,E 5个进程共享一片10kb的内存,A,B,F 3个进程又另外共享了30kb的内存,那么进程A调用这个函数返回就是10/5+30/3=12

所以理论上只要监视getTotalPrivateDirty()就能监视自己进程的内存变化

最后附上代码

public void getThisProcessMemeryInfo() {

int pid = AndroidosProcessmyPid();

androidosDebugMemoryInfo[] memoryInfoArray = activityManagergetProcessMemoryInfo(new int[] {pid});

Logd(TAG, "本应用当前使用了" + (float)memoryInfoArray[0]getTotalPrivateDirty() / 1024 + "mb的内存");

}

File root = EnvironmentgetRootDirectory();

StatFs sf = new StatFs(rootgetPath());

long blockSize = sfgetBlockSize();

long blockCount = sfgetBlockCount();

long availCount = sfgetAvailableBlocks();

Logd("TAG", "block大小:" + blockSize + ",block数目:" + blockCount + ",总大小:"+ blockSize blockCount / (1024 1024) + "MB");

Logd("TAG","可用的block数目::" + availCount + ",可用大小:" + availCount blockSize / (1024 1024)+ "MB");

一、利用Android API函数查看

11 ActivityManager查看可用内存。

ActivityManagerMemoryInfo outInfo = new ActivityManagerMemoryInfo();

amgetMemoryInfo(outInfo);

outInfoavailMem即为可用空闲内存。

12、androidosDebug查询PSS,VSS,USS等单个进程使用内存信息

MemoryInfo[] memoryInfoArray = amgetProcessMemoryInfo(pids);

MemoryInfo pidMemoryInfo=memoryInfoArray[0];

pidMemoryInfogetTotalPrivateDirty();

getTotalPrivateDirty()

Return total private dirty memory usage in kB USS

getTotalPss()

Return total PSS memory usage in kB

PSS

getTotalSharedDirty()

Return total shared dirty memory usage in kB RSS

二、直接对Android文件进行解析查询,

/proc/cpuinfo系统CPU的类型等多种信息。

/proc/meminfo 系统内存使用信息

/proc/meminfo

MemTotal: 16344972 kB

MemFree: 13634064 kB

Buffers: 3656 kB

Cached: 1195708 kB

我们查看机器内存时,会发现MemFree的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 空闲内存=free+buffers+cached=total-used

通过读取文件/proc/meminfo的信息获取Memory的总量。

ActivityManager getMemoryInfo(ActivityManagerMemoryInfo)获取当前的可用Memory量。

三、通过Android系统提供的Runtime类,执行adb 命令(top,procrank,ps等命令)查询

通过对执行结果的标准控制台输出进行解析。这样大大的扩展了Android查询功能例如:

final Process m_process = RuntimegetRuntime()exec("/system/bin/top -n 1");

final StringBuilder sbread = new StringBuilder();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(m_processgetInputStream()), 8192);

# procrank

RuntimegetRuntime()exec("/system/xbin/procrank");

内存耗用:VSS/RSS/PSS/USS

Terms

• VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

• RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)

• PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

• USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

USS is the total private memory for a process, ie that memory that is completely unique to that processUSS is an extremely useful number because it indicates the true incremental cost of running a particular process When a process is killed, the USS is the total memory that is actually returned to the system USS is the best number to watch when initially suspicious of memory leaks in a process

转载

以上就是关于如何获取 Android 设备的CPU核数,时钟频率以及内存大小全部的内容,包括:如何获取 Android 设备的CPU核数,时钟频率以及内存大小、android怎么获sd卡内的所有文件目录、获取应用程序占用了多少内存 android.os.Debug.MemoryInfo等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9790942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存