第一章:内存
 
内存的主要组成索引:
Native Heap:Native代码分配的内存,虚拟机和Android框架本身也会分配
Dalvik Heap:Java代码分配的对象
Dalvik Other:类的数据结构和索引
so mmap:Native代码和常量
dex mmap:Java代码和常量
 
内存工具:
观察Dalvik内存:Android Studio/Memory Monitor
观察整体内存:dumpsys meminfo
观察整体内存的详细组成:cat /proc//smaps
详细分析Dalvik内存:Eclipse Memory Analyzer
 
Pss表示进程实际使用的物理内存,是由私有内存加上按比例分担计算的各进程共享内存得到的值。
Dalvik Pss内存 = 私有内存Private Dirty + (共享内存Shared
Dirty/共享的进程数)
Private Dirty存放的是应用新建(new)出来的对象实例,是每个应用所独有的,不会再共享。
Shared Dirty主要是zygote加载的Android框架部分,会被所有Android应用进程共享
 
内存分配的最小单位是页面,通常是4KB,这个限制往往会引发各种碎片问题。
 
经验:
1.尽量不要在循环中创建很多临时变量
2.可以将大型的循环拆散、分段或按需执行
 
第二章:电量
Android系统上App的电量消耗由cpu、wake
lock、数据传输(移动网络&Wifi)、Wifi运行、gps、other sensors组成
 
详细耗电信息:adb shell dumpsys
batterystats|batteryinfo(4.1-4.3用batteryinfo)
 
Android5.0 Google使用工具Battery Historian
在Web端展示手机状态变化。6.0更新Battery Historian 2.0加入引起手机状态变化的应用
 
经验:
1.当应用退到后台,尽量减少应用的主动运行(减少CPU 时间片)
2.前台运行时,不要注册wake lock,此时注册没有意义,却会被计算到应用电量消耗中
3.合理设置GPS使用时长和使用频率
 
第三章:流畅度
为什么不用FPS,而用SM(Smoothness)
1.有时FPS很低,却不感觉卡顿。屏幕无绘制需求,画面是静止的,所以FPS为0。
2.App停止操作,FPS还一直变化。屏幕每一帧的合成都是针对手机所有进程。
 
Vertical
Synchronization(垂直同步),VSync机制理论1秒有60帧,即1帧大约16.6ms。
 
电影只有24帧,不觉得卡是因为每一帧渲染都是匀速的。
 
手机开发者选项里打开过度绘制区域查看,无色、蓝色、绿色、浅红、暗红依次指像素点绘制了1次、2次、3次、4次、5次。对于有多层背景颜色的Layout,留最上面一层颜色即可,其他底层的颜色都可以去掉
 
Tracer for OpenGL ES工具可以记录和分析App每一帧的绘制过程
 
Hierarchy Viewer 查找UI布局不合理
1.没有用的父布局,通过标签合并减少UI的层次
2.使用线性布局LinearLayout排版导致UI层次变深,减少层次或用相对布局RelativeLayout代替LinearLayout
3.不常用的UI被设置成GONE,用标签代替GONE提高UI性能
 
使用Lint静态扫描代码,发现问题
 
使用Traceview和Systrace工具分析代码,两种思路:
1.找出在主线程耗时较大的函数,通过缓存,或把耗时操作移出主线程,或把滑动过程中出现的耗时操作延时到滑动停止后才开始
2.分析滑动过程中CPU的工作,让CPU优先执行主线程的工作,尽量不要被其他线程抢占
 
第五章:流量
手机抓包:tcpdump抓包;wireshark分析;pcap2har为一个分析pcap的Python库文件
 
安卓有TCP统计功能,UID=10000+PID
/proc/uid_stat/UID目录下,tcp_snd和tcp_rcv就是TPC发送和接收流量
 
流量优化经验总结:
1.增量拉取数据
2.界面展示的数据非WIFI下不预取
3.实时的信息上报后台运行时改成非实时上报
4.非WIFI场景降低耗流量的功能的网络通信频率
5.合并网络请求,减少请求次数
6.尽量利用WIFI传输信息
 
第六章:安装包瘦身
使用UCDetector扫描无用代码,反射、在XML中配置注入方式、第三方工程的引用、jar包调用等代码的引用方法无法扫描到。
 
检查重复代码工具simian
 
使用AndroidSDK\tools下的Lint扫描Unused Resources
 
图片压缩:用pnggauntlet对非点9图片压缩,用crunch对点9图片压缩。
 
小尺寸、色彩数少、有alpha通道透明度的时候,使用PNG;大尺寸、色彩渐变色多的用JPG。JPG的图片,让设计师出图时直接出JPG格式的图片

《移动App性能评测与优化》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. S/4HANA和CRM Fiori应用的搜索分页实现

    在我的博客Paging Implementation in S/4HANA for Customer Management 我介绍了S/4HANA for Customer Management里采用 ...

  2. Jmeter入门7 测试中使用到的几个定时器和逻辑控制器

    1 测试中提交数据有延时1min,所以查询数据是否提交成功要设置定时器. 固定定时器页面:单位是毫秒 [dinghanhua] 2 集合点.Synchronizing Timer 集合点编辑:集合用户 ...

  3. Linux常用命令之文件和目录操作命令

    以下是linux操作系统常用的文件和目录操作命令: cd /home 进入 '/ home' 目录'  cd .. 返回上一级目录  cd ../.. 返回上两级目录  cd 进入个人的主目录  cd ...

  4. Ubuntu 14.04 VPS安装配置***的方法

    #安装*** $ sudo apt-get update $ sudo apt-get install python-gevent python-pip $ sudo pip install shad ...

  5. 【洛谷P1948】[USACO08JAN]电话线

    电话线 题目链接:https://www.luogu.org/problemnew/show/P1948 二分答案+最短路 我们要求一条1~n的路径,使其中的第k+1大的数最小. 二分第k+1大的数的 ...

  6. cudaMalloc和cudaMallocPitch

    原文链接 偶有兴趣测试了一下题目中提到的这两个函数,为了满足对齐访问数据,咱们平时可能会用到cudamallocPitch,以为它会带来更高的效率.呵呵,这里给出一段测试程序,大家可以在自己的机器上跑 ...

  7. 移动页面请使用CSS3动画

    说到动画,我们一般会使用jQuery 中的animate(); 在PC浏览器中,是很方便的,由于PC的高性能,这种不断修改DOM的做法确实不会出现太大的问题,但是在手机端就不同了. 手机上使用jQue ...

  8. 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列

    第28章     LTDC—液晶显示中英文 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  9. SpringMVC3中返回json字符串时500 Internal Server Error的处理方案

    搭建 Spring3+MyBatis+Rest+BootStrap+JBPM项目环境后,测试发现了一个操蛋的问题.使用Spring MVC的自动类型转换为JSON时,后台数据List/Map获取完全正 ...

  10. 微信H5单页面滑动的时候如何避免出界,出现头部和底部的黑底?

    ios系统微信浏览器.safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法 ios偶现下拉出现黑底时,界面第一次上拉时拉不动的解决方案: document.querySelector('# ...