app内存问题

[toc]

app内存问题

一、如何排查内存问题

参考文章:

2内存-③内存泄漏定位.md

二、优化前后数据对比

时刻 目前情况 取消图片缓存扩容设置 去掉TTF文件初始化
打开APP时 img img img
滑动瀑布流 img img img
优化效果说明 优化后,在滑动瀑布流的时候,内存从原来的稳定1.24G,降低到稳定的896M 优化后,打开APP时,内存明显再降低了80M左右

问1:滑动过程中的突刺是什么操作产生?

问2:滑动过程内存增加用户操作是?增加后,内存增加到峰值就没增加的原因?如果估算峰值/峰值是该数值有计算方法?

问3:去掉ttf后,内存降低的数值怎么计算?是1:1的方式?

三、下载的内存分析和优化

以下载以下文件为例,

网络资源:https://media.xihuanwu.com/applet/wishhouse/reward/svga/rocket.svga (13MB)

序号 步骤 Dio 5.2.1
(Flutter)
HTTP 0.13.6
(Flutter)
OkHttp3 4.10.0
(Android)
0 未下载时 同左 同左
1.1 rocket.svga–13MB
下载过程峰值
1.2 rocket.svga–13MB
下载结束后置放
1.3 rocket.svga–13MB
下载结束后切换后台
1.4 rocket.svga–13MB
下载结束后切换后台回前台
2.1 rocket.svga–13MB
下载过程峰值
2.2 rocket.svga–13MB
下载结束后
3.1 rocket.svga–13MB
下载过程峰值
3.2 rocket.svga–13MB
下载结束后
4.1 rocket.svga–13MB
下载过程峰值
4.2 rocket.svga–13MB
下载结束后
5.1 rocket.svga–13MB
下载过程峰值
5.2 rocket.svga–13MB
下载结束后
884M
小结 在5次下载后,内存占用达到884MB,尝试将应用切换至后台、置放、手动GC,内存均无变化。①每次下载内存增加?②下载的内存并没有办法得到释放? 原来的触发下载改为此项后,内存无影响变化

结论:

​ 通过以上数据可以看出,Flutter实现在每次下载时,内存都发生了显著的上升,而原生实现表现平稳,在执行以上操作后,Flutter实现的内存占用达到了 884MB,而原生为 284MB,相比Flutter实现 少了600MB的内存占用。

建议将现有下载转为原生实现,从而降低资源下载时的内存使用。