性能测试及问题分析-优化工具说明_第1页
性能测试及问题分析-优化工具说明_第2页
性能测试及问题分析-优化工具说明_第3页
性能测试及问题分析-优化工具说明_第4页
性能测试及问题分析-优化工具说明_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

性能优化工具说明Sunli.Wang本文目标了解一些可以获取手机信息的命令了解一些可以进行代码优化的工具手机性能问题思维导图

31.查询总共内存以及剩余内存1.使用adbshell命令进入手机的shell模式2.catproc/meminfo3.显示结果:-------------------------------------------MemTotal:2052440kB//总内存MemFree:50004kB//空闲内存Cached:436412kB//高速缓冲存储器使用的大小----------------------------------------------所以我们统计的系统剩余内存为MemFree+Cached一般低于20M的话,就属于内存较低的情况了。

42.

查看各进程内存信息1.使用adbshell命令进入手机的shell模式2.procrank3.显示结果:-----------------------------------------------PIDVssRssPssUsscmdline26253828K49888K21094K18688Ksystem_server724457936K48604K20153K17948Kcom.medicaltreatment124753108K48972K19730K17040Kcom.tencent.mobileqq-----------------------------------------------VSS是单个进程全部可访问的地址空间。其大小包括可能还尚未在内存中驻留的部分。比如地址空间已经被malloc分配,但是还没有实际写入。对于确定单个进程实际内存使用大小,VSS用处不大。RSS是单个进程实际占用的内存大小。RSS易被误导的原因在于,它包括了该进程所使用的所有共享库的全部内存大小。对于单个共享库,尽管无论多少个进程使用,实际该共享库只会被装入内存一次。对于单个进程的内存使用大小,RSS不是一个精确的描述。PSS不同于RSS,它只是按比例包含其所使用的共享库大小。例如,三个进程使用同一个占用30内存页的共享库。对于三个进程中的任何一个,PSS将只包括10个内存页。PSS是一个非常有用的数字,因为系统中全部进程以整体的方式被统计,对于系统中的整体内存使用是一个很好的描述。如果一个进程被终止,其PSS中所使用的共享库大小将会重新按比例分配给剩下的仍在运行并且仍在使用该共享库的进程。USS是单个进程的全部私有内存大小。亦即全部被该进程独占的内存大小。USS是一个非常非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止,USS就是实际被返还给系统的内存大小。USS是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。

53.查看系统内存碎片状况1.使用adbshell命令进入手机的shell模式2.catproc/buddyinfo3.显示结果:-----------------------------------------------------------------Normal4021100800-----------------------------------------------------------------上述数据以4kb,8,16,32,64,128,256,512,1024,2048,4096kb为单位的所有可分配内存之和,如果出现如下数据,则极有可能出现内存碎片严重的情况。-----------------------------------------------------------------Normal58901000000000----------------------------------------------------------------

64.查看系统整体状态(一)1.使用adbshell命令进入手机的shell模式2.vmstat3.显示结果:-------------------------------------------------------------------procsmemorysystemcpurbfreemappedanonslabincsfltusnisyidwair006396325522376200000990010639632552237620000299301063963255223762000019900-------------------------------------------------------------------

74.查看系统整体状态(二)

8类别项目含义现象分析Procsr等待执行的任务数等待队列进程数远大于1R项目展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。此时需要确认系统是否运行了CPU占有过高的应用。参考top命令b等待IO的进程数量如果该值过大,等待IO的进程可能很多需要确认是否有过多的文件操作(如浏览网页),是否由于文件读写过慢导致3.查看系统整体状态(三)

9类别项目含义现象分析CpuUsUsertime用户部分消耗的CPU时间百分比可能用户进程太忙或死循环需要使用top命令SySystemtime系统内部部分消耗的CPU时间百分比可能系统比较忙或者使用过多的忙等待如果该数值过高,需要检查驱动或者内核模块,是否代码实现有问题。IdIdletime系统空闲时间百分比该数值小或为0需要综合其他几个CPU占比,综合考虑,该数值若大,说明系统有冗余,此时系统响应应该比较好4.查看系统整体状态(四)

10类别项目含义现象分析CpuwaIOwaitcpu在等待IO完成时间占比系统的IO开销较大,系统在等待IO系统在等待IO的时间CPU无事可做,只能等待IO完成后才能继续工作,该数值若大,对系统的流畅性体验冲击很大。出现此问题,需要结合其他数据,定位是文件读写过慢导致,还是由于系统文件缓存(很大部分是app的资源文件)被置换导致。5.查询当前系统总共进程

111.使用adbshell命令进入手机的shell模式2.ps3.显示结果:-------------------------------------------------root68200c469a46000000000Sjbd2/mmcblk0p13root69200c458321c00000000Sext4-dio-unwritroot70200c469a46000000000Sjbd2/mmcblk0p14root71200c458321c00000000Sext4-dio-unwritroot72200c469a46000000000Sjbd2/mmcblk0p10root73200c458321c00000000Sext4-dio-unwritroot74200c458321c00000000Sgpu_dfsroot75200c458321c00000000Smali-pmm-wq--------------------------------------------------6.查看当前CPU占有率

121.使用adbshell命令进入手机的shell模式2.top–m10//显示CPU占用率前10位的进程3.显示结果:------------------------------------------------------------User0%,System2%,IOW0%,IRQ0%User2+Nice0+Sys14+Idle613+IOW0+IRQ0+SIRQ0=629

PIDPRCPU%S#THRVSSRSSPCYUIDName1125902%R11052K440Kfgroottop33300%S22304576K37928Kfgsystemcom.android.systemui8400%S1462996K5324Kfgsystem/system/bin/surfaceflinger1094210%S54528K244Kfgshell/sbin/adbd5510%R10K0Kfgrootmmcqd/0124710%S32334624K48784Kfgapp_51com.tencent.mobileqq1210%S10K0Kfgrootfs_sync1300%S10K0Kfgrootsync_supers1400%S10K0Kfgrootbdi-default1510%S10K0Kfgrootkblockd------------------------------------------------------------7.查看ROM使用情况

131.使用adbshell命令进入手机的shell模式2.df3.显示结果:------------------------------------------------------------FilesystemSizeUsedFreeBlksize/dev211M76K211M4096/mnt/asec211M0K211M4096/mnt/obb211M0K211M4096/system281M207M73M4096/data1G577M1G4096/cache140M4M136M4096/productinfo4M4M856K4096/mnt/internal998M428M569M4096------------------------------------------------------------如果data分区的Free数值过小,就会弹出ROM警告。我们可以使用下面的命令来寻找是否有过大文件导致data分区剩余空间不足。1.使用adbshell命令进入手机的shell模式2.cddata–>进入data目录3.busyboxfind.-typef-size+500k–>查找大于500K的文件。再来看一下性能问题的思维导图

14性能优化调试工具集合(DDMS)介绍DDMS的全称是DalvikDebugMonitorService,是Android开发环境中的Dalvik虚拟机调试监控服务我们将在这里介绍4个主要的性能调优工具1.TraceView2.Lint3.HierarchyViewer4.MATTraceView介绍(一)使用Debug的以下静态方法方法来启动:staticvoidstartMethodTracing(StringtraceName).使用指定trace文件的名字和默认最大容量(8M)的方式开始方法的追踪staticvoidstartMethodTracing()使用默认trace文件的名字(dmtrace.trace)和默认最大容量(8M)的方式开始方法的追踪staticvoidstartMethodTracing(StringtraceName,intbufferSize,intflags)使用指定trace文件的名字和最大容量的方式开始方法的追踪。并可指定flags.注:intflags好像没意义。一般都用0.staticvoidstartMethodTracing(StringtraceName,intbufferSize)使用指定trace文件的名字和最大容量的方式开始方法的追踪。注1:以上的方法的文件都会创建于SD卡下,即"/sdcard/"下,对默认文件名的就是"/sdcard/dmtrace.trace"如果没SD卡,以上方法会抛异常致使程序crash.注2:如果文件名没有指定类型,系统为其加上类型.traceTraceView介绍(二)使用Debug的静态方法方法来停止:publicstaticvoidstopMethodTracing()代码示例:例如在activity的onCreate()中添加Debug.startMethodTracing(),而在onDestroy()中添加Debug.stopMethodTracing(),如下:@OverridepublicvoidonCreate(BundlesavedInstanceState){Debug.startMethodTracing();super.onCreate(savedInstanceState);..............................}

protectedvoidonDestroy(){super.onDestroy();.................Debug.stopMethodTracing();}TraceView介绍(三)把trace文件从SD卡拷到电脑上现在我们把这个文件copy到我们的电脑上指定的目录:adbpull/sdcard/dmtrace.traced:现在就可以通过命令行来执行traceview了。进入SDK的tools目录后,执行traceview,如下:traceviewD:\dmtrace.trace.之后即可以看到图形界面了。分析traceview结果TraceView介绍(四)

窗口的上半部分是时间轴面图(TimelinePanel)界面上方的尺子代表了MethodTracing的时间段(从Debug.startMethodTracing()到Debug.stopMethodTracing()的时间)。

每个线程的函数执行时间图处于和线程名同一行的右侧。注1:线宽度代表执行该函数本身操作所用的时间。注2:函数所调用的子函数时间线夹杂在该函数本身操作所用的时间线之间。注3:函数本身是嵌套的。注4:每行下面粗的线段标注了ProfilePanel中被选中函数调用所消耗的时间段。每个线段对应一次函数的运行。窗口的下半界面是对各个函数调用的汇总图ProfilePanel图2是对各个函数调用的汇总图ProfilePanel。该表给出了theinclusiveandexclusivetimes及他们所占有的百分比。Exclusivetime是该函数本身基本操作(不包括子函数调用)的时间。Inclusivetime是该函数调用所用的时间(包括子函数调用)的时间。TraceView介绍(五)

Android2.2以上版本可以在DDMS使用Traceview,比以前简化的不少。Traceview文件流是直接指向开发调试的主机(即DDMS所在的电脑)1.在设备表中选中你想进行methodtrace的进程。2.单击MethodProfiling按钮开始methodtrace。该按钮在窗口的左上方,它在"stop"按钮的左方,"Device菜单的正下方"。3.methodtrace进行中。4.单击MethodProfiling按钮停止methodtrace。紧接着系统会自动弹出Traceview窗口来显示刚才的methodtrace结果。Lint介绍(一)

AndroidLint是SDKTools16(ADT16)之后才引入的工具,通过它对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题。AndroidLint提供了命令行方式执行,还可与IDE(如Eclipse)集成,并提供了html形式的输出报告Lint介绍(二)

在Window->Perference->Android->LintErrorChecking中可以查看到相关的检查内容,以及优先级别Lint介绍(三)

选择开发的APK项目(平台APK可选择性导入),右击->AndroidTools->RunLint:CheckForCommonerrorsLint介绍(三)

选择开发的APK项目(平台A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论