- 浏览: 365669 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
loveskey:
找了好久,可算是找到了。感谢
dx.jar dx.bat -
zhaoyi168:
可以把工程的代码发给我吗?
ZJLN1982@yahoo.co ...
Athrun Demo -
ergodic09:
請問樓主 我目前在porting AR6003但是無法自己產生 ...
009-Android平台开发-WIFI function porting-WIFI功能移植 -
iedj99fei:
...
androi中xliff:g
1 Memory的分配(RAM而非ROM)
网址:
•http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android/2299813#2299813
•http://unixfoo.blogspot.tw/2008/02/know-about-procmeminfo.html
•http://www.redhat.com/advice/tips/meminfo.html
1.1 读取系统文件:/proc/meminfo
图1
• MemTotal: Total usable RAM in kilobytes (i.e. physical memory minus a few reserved bytes and the kernel binary code)
• MemFree: The amount of physical RAM left unused by the system.
• Buffers: The amount of physical RAM used for file buffers.
• Cached: The amount of physical RAM used as cache memory. Memory in the pagecache (diskcache) minus SwapCache.
• SwapCache: This is the amount of Swap used as cache memory. Memory that once was swapped out, is swapped back in, but is still in the swapfile.
解析上述文件内容,并以键值对的形式保存。
1.2 计算总Memory大小及剩余Memory大小
总Memory大小 = MemTotal
剩余Memory大小 = MemFree + Buffers + Cached
1.3 Android中获取memory信息
1》通过ActivityManager.MemoryInfo获取系统memory信息。
availMem:系统可用内存(大于实际可用内存,包括一些优先级低的应用及后台服务所占内存,但当优先级高的process需请求memory时,这些优先级低的process可以随时被kill掉,前提是当前处于lowMemory状态)。
totalMem:android4.1.2(API level 16)及以上支持
2》通过Debug.MemoryInfo获取该进程(正在运行的app)memory信息。
dalvikPrivateDirty:进程占用内存大小(独占,不和任何其他processes共享)
2 Cpu的占用率
2.1 计算总Cpu占用率
2.1.1 读取系统文件:/proc/stat
图2
(注意:Intr 这行还有很多参数,这里我们无需考虑)
上图中第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:
参数 解析(单位:jiffies)
user (3082057) 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负的进程。
nice (62814) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间
system (1636874) 从系统启动开始累计到当前时刻,处于核心态的运行时间
idle (4204930) 从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间
iowait (29277) 从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)
irq (253) 从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)
softirq (2868) 从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)
stealstolen(0) which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)
guest(0) which is the time spent running a virtual CPU for guest operating systems under the control of the Linux kernel(since 2.6.24)
2.1.2 计算总cpu时间
结论一:总的cpu时间totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest
2.1.3 总Cpu使用率的计算
计算方法:
3.1、 采样两个足够短的时间间隔(如1s)的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为:
(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;
3.1.1、 计算总的Cpu时间片totalCpuTime
a) 把第一次的所有cpu使用情况求和,得到s1;
b) 把第二次的所有cpu使用情况求和,得到s2;
c) s2 - s1得到这个时间间隔内的所有时间片,即totalCpuTime = s2 - s1 ;
3.2、计算空闲时间idle
idle对应第四列的数据,用第二次的第四列 - 第一次的第四列即可
idle=第二次的第四列 - 第一次的第四列
3.3、计算cpu使用率
pcpu =100* (total-idle)/total
2.2计算单个App Cpu 的占用率
2.2.1 读取系统文件:/proc/pid/stat
图3
/proc/pid/stat中记录了进程号为pid的进程所有活动信息,与Cpu使用率相关参数有(上述字段从索引第14个到17个):
参数 解释
pid=13533 进程号
utime=1583 该任务在用户态运行的时间,单位为jiffies
stime=430 该任务在核心态运行的时间,单位为jiffies
cutime=1044825 所有曾经在用户态运行的线程所占的时间,单位为jiffies
cstime=48675 所有曾经在核心态运行的线程所占的时间,单位为jiffies
2.2.2 计算App所占cpu时间
结论二:进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,(该值包括其所有线程的cpu时间)。
2.2.3 单个App Cpu的使用率
计算方法:
1. 采样两个足够短的时间间隔(如1s)的cpu快照与进程快照,
a) 每一个cpu快照均为(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;
b) 每一个进程快照均为 (utime、stime、cutime、cstime)的4元组;
2. 分别根据结论一、结论二计算出两个时刻的总的cpu时间与进程的cpu时间,分别记作:totalCpuTime1、totalCpuTime2、processCpuTime1、processCpuTime2
3. 计算该进程的cpu使用率pcpu = 100*( processCpuTime2 – processCpuTime1) / (totalCpuTime2 – totalCpuTime1) (按100%计算,如果是多核情况下还需乘以cpu的个数);
3 电池电量消耗统计
3.1 Android中影响电池电量大量消耗的主要因素
大量网络数据传输(视频)、传感器(游戏)、大量文本数据的解析(解析器中Tree,Stream样式)、程序内部大量使用锁机制(WakeLock)、没有养成手动释放内存的习惯(造成GC多次被创建)等。
图4
图5
3.2 Android中获取电池电量
1》 定义广播接收器
class BatteryReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
intent.getExtras().getInt("level");
intent.getExtras().getInt("scale");
intent.getExtras().getInt("health");
intent.getExtras().getInt("plugged");
intent.getExtras().getBoolean("present");
intent.getExtras().getInt("status");
intent.getExtras().getString("technology");
intent.getExtras().getInt("temperature");
intent.getExtras().getInt("voltage");
}
}
2》注册广播Intent.ACTION_BATTERY_CHANGED
BatteryReceiver mReceiver = new BatteryReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mReceiver, filter);
3》反注册广播
unregisterReceiver(mReceiver)
发表评论
-
eclipse中安装插件地址
2014-03-07 15:08 755http://subclipse.tigris.org/up ... -
ubuntu13下载android源码
2014-02-27 18:23 632一、注意repo的正确地址 repo:curl " ... -
用例无法运行,报如下错:Exception during suite construction
2014-02-26 15:47 1264一 前提 1、 测试工程中的所有参数已配置好,如ins ... -
dx.jar dx.bat
2013-06-17 19:33 2255Android SDK中dx.jar, dx.bat文件的备份 ... -
Please ensure that adb is correctly located..... 问题
2013-04-16 09:44 963解决方法: 方法一、查毒杀毒,也许了病毒占用了adb ... -
PC端通过adb与设备端通信
2013-03-28 09:36 1509adb 全称Android Debug Bri ... -
Unable to execute dex: Multiple dex files define Lorg/taptwo/android/widget/Circ
2013-02-21 15:07 2574问题:[2013-02-21 15:01:02 - Dex ... -
android viewTree and decorView
2013-01-30 13:55 1694Android ViewTree and DecorView ... -
No active compatible AVD's or devices found. Relaunch this configuration after c
2013-01-29 10:56 8759问题:No active compatible AVD's ... -
代码对比工具
2013-01-24 15:33 645windows: http://www.scooterso ... -
android最新源码下载
2013-01-23 09:57 1047源码下载:https://source.android.co ... -
Ios 自动化测试工具
2013-01-16 11:39 9251:Monkeytalk 2: Calabash 3: ... -
自动化测试用例编写守则
2013-01-14 13:45 1503原文出自:http://www.cnbl ... -
Mac平台MonkeyTalk的使用
2013-01-14 09:49 1620Mac平台MonkeyTalk的使用 一 搭 ... -
Run MonkeyTalk Scripts via Ant in Windows
2012-12-18 20:24 1275Run MonkeyTalk Scripts via ... -
人工测试代码技术
2012-11-21 17:18 1136人工测试代码技术 ... -
http://code.taobao.org/p/TMTS/src/
2012-10-12 17:38 1029http://code.taobao.org/p/TMTS/s ... -
string.xml文件中的特殊符号转换符
2012-09-24 09:09 775strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
web server 中设置wifi代理
2012-09-24 09:07 891DefaultHttpClient httpClient = ... -
Android开发一些常见问题
2012-09-24 09:06 7401:当追踪问题时,代码中实在找不出问题所以,代码的逻辑完全正确 ...
相关推荐
在Android中,CPU的相关信息存储在`/proc/cpuinfo`和`/proc/stat`这两个文件中。`/proc/cpuinfo`包含了CPU的型号、核心数量等详细信息,而`/proc/stat`则记录了CPU的活动状态,可以用来计算CPU使用率。在Java代码中...
它们可以帮助开发者定位CPU密集型的代码段,分析并优化代码,减少不必要的计算,提高应用运行效率。 2. **内存管理**: - `MAT (Memory Analyzer Tool)`:这是一款强大的Java内存分析工具,可用来检测内存泄漏和...
This is a android app to monite phone system info (cpu,memory,battery...) in background Features Record SystemInfo App can record phone system infomation in background with given interval.This can be ...
### Android系统信息获取详解 #### 一、内存信息获取 ...通过以上介绍的方法,开发者可以较为全面地获取到Android设备的内存、CPU、SD卡、电量和版本等信息,这对于开发过程中优化性能、调试问题等都非常有帮助。
Android内核还实现了名为Ashmem(Android Shared Memory)的内存共享机制,该机制位于`kernel/mm/ashmem.c`文件中。Ashmem允许不同进程之间共享内存段,从而提高了数据交换的效率。 #### 七、结论 通过对Android...
Android, the next-generation open mobile platform from Google and the Open Handset Alliance, is poised to become a significant player in the mobile device market. The Android platform gives developers...
- **选择组件**:在安装过程中可以选择所需的组件,包括 Android SDK、Android Virtual Device (AVD) 等。 - **自定义设置**:可以自定义安装路径以及是否创建桌面快捷方式等选项。 - **完成安装**:按照提示完成...
Issues with Battery Life Power Measurement Options Sources of Power Drain Addressing Application Size Issues Crash Reporting Using ACRA In-App Diagnostics Anti-Patterns Widget Catalog: ...
4. **CPUUsageMonitor**: 对CPU使用率的监控是优化性能的关键,优化大师可能通过这一部分的代码来识别并控制高CPU占用的应用,平衡性能与功耗。 5. **IOOperations**: 文件I/O操作优化可能包括缓存管理、读写优化等...
通过QEMU(Quick Emulator)工具,Goldfish能够模拟ARM926EJ-S CPU,提供了一个完整的Android设备环境。这一改动使得开发者无需实际硬件即可进行应用开发和系统调试,极大地提高了开发效率。 #### 2. 内核配置与...
1. **Android Studio Profiler**:集成的性能分析工具,包括Memory Profiler(内存分析)、CPU Profiler(CPU使用率)、Network Profiler(网络性能)等,帮助定位和解决性能问题。 2. **Battery Historian**:...
1. **Android Profiler**:这是Android Studio内置的一个强大的性能分析工具,它可以实时监测CPU、内存、网络和电池的使用情况。通过CPU Profiler,开发者可以跟踪方法调用,找出可能导致性能瓶颈的代码段;Memory ...
NetEase QA Emmagee,Android performance test tool-CPU,memory,network traffic,starting time,battery current and status。需要Root手机
Emmagee is a practical, handy performance test tool for specified Android App, which can monitor CPU, memory, network traffic, battery current and status(Some devices are not supported). Additionally,...
DDMS是Android Studio的一部分,提供了内存、线程和CPU使用率的实时监控,方便开发者定位性能问题。 9. **LeakCanary** LeakCanary是一款自动检测内存泄漏的小型库,特别适合在开发阶段使用。它会在检测到内存...
可提供截图、fps、Jank、FTime、CPU、GPU、Memory、Battery 、Network、CTemp等性能参数,这些您都可以轻松获得。 应用广泛性 支持所有APP应用、游戏、小程序、小游戏、H5、web等,性能测试一个就够了。 工具易用性 ...
- **能源测试工具**:使用如Battery Historian(Android)或Xcode Energy Diagnostics(iOS)等工具,进行能源消耗测试和分析。 - **性能监控**:通过性能监控工具,如MAT(Memory Analyzer Tool)和VisualVM,...
**功能描述:** 微处理器集成电路是一种集成了CPU、内存、输入输出接口等功能的芯片,广泛应用于各种嵌入式系统中。 #### 45. Miscellaneous 各种杂项元件 **中文名称:** 杂项元件 **功能描述:** 杂项元件包括各种...