Android 性能分析之内存抖动分析

Q:为什么会产生内存抖动,以及他的影响?

  • 在短时间内产生大量的对象,严重占用Young Generation(分代垃圾回收的年轻代)的内存区域,当剩余空间不够的时候,会触发GC从而导致刚产生的对象又很快被回收。如果,频繁的进行这种操作,就会引起不断的GC,从而导致UI线程被频繁的阻塞,导致UI卡顿。

使用工具

  • Android studio
  • 模拟器

获取操作时间内的内存轨迹

通过Allocation Tracking 来截取内存频繁GC的那段操作。
操作:点击start之后,操作完成;再次点击,获取这段的内存轨迹

获取完成,颜色不一样的那段

分析文件,定位频繁GC的对象

截取内存轨迹后,稍等一会,studio会自动打开文件。

操作: 选择Group By Allocator,查看自己(目标)包下的内容,并找到Count多的文件对应的类,展开。参照下面2个图。

属性说明:
Count:内存分配次数;
Size:内存分配大小;

这里可以看到StringBuilder还有Path对象在频繁的分配内存

扫描二维码关注公众号,回复: 2569294 查看本文章

右键跳到源码位置(正在打开的项目才可以哦),进行优化

优化完成的内存轨迹

优化完成后,再次查看Memory,已经比之前好多了

查看分配次数,比之前小多了。当然,还需要优化(这里只做演示)

其他属性说明,圆图(Layout,Sunburst)等,备注下,以后更新。

猜你喜欢

转载自blog.csdn.net/ecliujianbo/article/details/76535696
今日推荐