位置: 编程技术 - 正文

Android性能优化之内存篇(Android性能优化工具)

编辑:rootadmin

推荐整理分享Android性能优化之内存篇(Android性能优化工具),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Android性能优化实战,android性能优化总结,android性能优化面试题,Android性能优化实战,Android性能优化实战,Android性能优化工具,android性能优化总结,Android性能优化面试,内容如对您有帮助,希望把文章链接给更多的朋友!

下面是内存篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流!

1)Memory, GC, and Performance

众所周知,与C/C&#;&#;需要通过手动编码来申请以及释放内存有所不同,Java拥有GC的机制。Android系统里面有一个Generational Heap Memory的 模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作。例如,最近刚分配的对象会放在Young Generation区域,这个区域的对象通常都是会快速被创建并且很快被销毁回收的,同时这个区域的GC操作速度也是比Old Generation区域的GC操作速度更快的。

除了速度差异之外,执行GC操作的时候,所有线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行。

通常来说,单个的GC并不会占用太多时间,但是大量不停的GC操作则会显著占用帧间隔时间(ms)。如果在帧间隔时间里面做了过多的GC操作,那么自然其他类&#;计算,渲染等操作的可用时间就变得少了。

2)Memory Monitor Walkthrough

Android Studio中的Memory Monitor可以很好的帮助我们查看程序的内存使用情况。

3)Memory Leaks

内存泄漏表示的是不再用到的对象因为被错误引用而无法进行回收。

发生内存泄漏会导致Memory Generation中的剩余可用Heap Size越来越小,这样会导致频繁触发GC,更进一步引起性能问题。

举例内存泄漏,下面init()方法来自某个自定义View:

private void init() { ListenerCollector collector = new ListenerCollector(); collector.setListener(this, mListener);}

上面的例子容易存在内存泄漏,如果activity因为设备翻转而重新创建,自定义的View会自动重新把新创建出来的mListener给绑定到ListenerCollector中,但是当activity被销毁的时候,mListener却无法被回收了。

4)Heap Viewer Walkthrough

下图演示了Android Tools里面的Heap Viewer的功能,我们可以看到当前进程中的Heap Size的情况,分别有哪些类型的数据,占比是多少。

5)Understanding Memory ChurnAndroid性能优化之内存篇(Android性能优化工具)

Memory Churn内存抖动,内存抖动是因为在短时间内大量的对象被创建又马上被释放。瞬间产生大量的对 象会严重占用Young Generation的内存区域,当达到阀&#;,剩余空间不够的时候,会触发GC从而导致刚产生的对象又很快被回收。即使每次分配的对象占用了很少的内存, 但是他们叠加在一起会增加Heap的压力,从而触发更多其他类型的GC。这个操作有可能会影响到帧率,并使得用户感知到性能问题。

解决上面的问题有简洁直观方法,如果你在Memory Monitor里面查看到短时间发生了多次内存的涨跌,这意味着很有可能发生了内存抖动。

同时我们还可以通过Allocation Tracker来查看在短时间内,同一个栈中不断进出的相同对象。这是内存抖动的典型信号之一。

当你大致定位问题之后,接下去的问题修复也就显得相对直接简单了。例如,你需要避免在for循环里面分配对象占用内存,需要尝试把对象的创建移到循 环体之外,自定义View中的onDraw方法也需要引起注意,每次屏幕发生绘制以及动画执行过程中,onDraw方法都会被调用到,避免在onDraw 方法里面执行复杂的操作,避免创建对象。对于那些无法避免需要创建对象的情况,我们可以考虑对象池模型,通过对象池来解决频繁创建与销毁的问题,但是这里 需要注意结束使用之后,需要手动释放对象池中的对象。

6)Allocation Tracker

关于Allocation Tracker工具的使用,不展开了,参考下面的链接:

Your Code To Reduce Churn

下面演示一个例子,如何通过修改代码来避免内存抖动。优化之前的内存检测图:

定位代码之后,修复了String拼接的问题:

优化之后的内存监测图:

8)Recap

上面提到了三种测量内存的工具,下面再简要概括一下他们各自的特点:

Memory Monitor:跟踪整个app的内存变化情况。

Heap Viewer:查看当前内存快照,便于对比分析哪些对象有可能发生了泄漏。

Allocation Tracker:追踪内存对象的来源。

来源: <

Android之自定义(上方标题随ViewPager手势慢慢滑动) 最近很蛋疼,项目要模仿网易新闻的样式去做。上次把仿网易新闻客户端的下拉刷新写出来了,这次是ViewPager的滑动,同时ViewPager的上面标题下划线跟

自定义之仪表盘 自定义的View,实现了转盘的动画旋转,通过结合Animator实现的动画。效果图:源码下载地址:

Dom学习笔记 1.使用javascript操作dom进行dhtml开发;2.dom就是html页面的模型,将每个便签都作为一个对象,javascript通过调用dom中的属性方法就可以对网页中的文本框,

标签: Android性能优化工具

本文链接地址:https://www.jiuchutong.com/biancheng/374354.html 转载请保留说明!

上一篇:Java中的匿名内部类:由setOnClickListener说起(java的匿名内部类)

下一篇:Android之自定义(上方标题随ViewPager手势慢慢滑动)(安卓自定义app)

  • 一般纳税人增值税怎么做账务处理
  • 个人私活 要交个人所得税吗
  • 税收契子怎么算
  • 加计扣除要交所得税嘛
  • 工亡赔偿金如何支付
  • 没有发票的福利有哪些
  • 进口增值税电子税单抵扣
  • 会计利润包不包括营业外支出
  • 公司会计怎么做
  • 进项发票认证后暂不抵扣
  • 专票已认证但又没有发票
  • 存货质押贷款风险
  • 收取员工宿舍租金收入要交增值税吗
  • 一般纳税人企业所得税政策最新2023税率
  • 纳税人发生纳税义务,未按照规定
  • 免税农产品转出进项税税率
  • 股东未发工资可否提出仲裁
  • 开票软件安装6位地区编号填什么
  • 将商业承兑汇票进行贴现 符有追索权的会计分录
  • 小规模开票后的分录怎么做
  • 开了发票未收款
  • 印花税按含税收入还是不含税收入
  • 客户转钱到公司怎么说
  • 国税增值税定额计算公式
  • 我公司对某公司作如下措施
  • 并购动因理论有什么
  • 网速突然变差是什么原因
  • macos big sur卡在
  • 销售免税商品可以抵扣进项税吗
  • php require的用法
  • 企业人员工资怎么避税
  • 企业所得税季度申报表营业收入怎么填写
  • 投资性房地产公允价值大于账面价值计入
  • uniapp开发常用案例
  • gmt微调
  • 128种chatGPT可以为人类做的事情
  • 取得短期借款会计分录
  • 境外公司委托境内公司付款
  • 金税三期可以申报个税吗
  • mybatis怎么用
  • 现金折扣什么时候冲减收入
  • 商业会计与财务会计的相同
  • 筹建养老院国家有哪些优惠政策?
  • 财务预算资产负债表如何编制
  • 小规模做账要做应交税费吗
  • ubuntu20.04vim
  • sqlserver2005属于
  • 建筑安装增值税税率变更过程
  • 公司买口罩
  • 企业内部之间借款利息可以税前扣除吗
  • 跨年更正错误记账凭证的方法
  • 公司是否可以投资股票
  • 税控盘服务费减免政策
  • 高新技术企业的税收优惠政策
  • 税收滞纳金计入营业外收入的哪里
  • 税控盘开具发票怎么冲红?
  • 数字证书限额多少
  • 会计凭证中转是什么
  • sql server查询指定内容
  • mysql5.7.17 zip 解压安装详细过程
  • freebsd使用wifi
  • win7一直弹广告怎么办
  • win10硬盘安装器安装教程
  • win7系统修复工具在哪
  • 如何ie8升级到10
  • centos sudoers
  • centos屏蔽ip
  • mac2019强制关机
  • perl-v
  • jquery 动态加载js
  • python web开发环境搭建
  • js设计模式和开发实践
  • python递归写法
  • 预缴的增值税怎么做账务处理
  • 纳税人识别号不能含有IOZSV
  • 非经营性房屋具体指哪些?
  • 增值税计税依据含运费吗
  • 商铺缴纳契税需要复印件吗
  • 尾矿治理文件
  • 如何网上办税票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设