当前位置: 首页 > news >正文

移动App性能测评与优化1.3 新问题的进一步挖掘

1.3 新问题的进一步挖掘

上一节介绍了内存测试的基本流程,讲述了如何发现并处理简单的内存问题。对于Dalvik Heap部分总结出了一些常见的问题模式,以及如何使用工具识别和处理这些常见的内存问题。

当简单问题不再是问题的时候,我们就会开始遇上一些奇怪问题了,类似于下面这些:

 

“我们这个版本引入了一个挺简单的库,内存就涨了2MB。”

“这些代码只是初始化了几个对象,还没有开始用呢。”

“我只是改了一行代码,没有创建新对象。”

“我一行代码都没改,怎么会涨呢?”

 

这次出现的问题就是这样一类问题,新版本的Dalvik Heap Pss内存出现了2MB左右的增长,但Dalvik Heap Alloc只增长了273KB,而从Dalvik Heap Free也能看出大部分增长的内存是处于空闲状态的。

对问题经过一段时间的观察,我们有以下几点发现:

经过较长时间待机后也没有被释放回系统。

有几处代码会导致内存增长,只要将这些代码屏蔽掉,内存使用情况就下降到正常水平。

这些代码分配的内存并不多,甚至有些地方是不需要分配内存的。

有些代码并不是这个版本新加入的,已经存在较长时间了。

使用裁剪功能的方法编译并分析内存后,基本可以确定是新加入代码消耗了内存,但并没有内存泄漏,代码经过审查也没有发现问题。

这个结果让我们陷入了困惑,常用的方法找不出问题,说明有更深层次的原因。接下来要从更底层的DVM虚拟机寻找问题。

相关文章:

  • 《Python自然语言处理》——第1章 语言处理与Python 1.1 语言计算:文本和词汇...
  • 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.5节Android应用程序运行的机制...
  • 《精通软件性能测试与LoadRunner最佳实战》—第2章2.2节性能测试需求分析
  • 《Windows Server 2012活动目录管理实践》——2.5 常见问题
  • 《SQL初学者指南(第2版)》——第2章 基本数据检索
  • 《CCNA学习指南:Cisco网络设备互连(ICND2)(第4版)》——1.1节理解VLAN 和VLAN Trunk 及排除相关故障...
  • 《Redis入门指南》一4.6 节省空间
  • 《深入理解JavaScript》——2.8 结论
  • 数据挖掘与数据化运营实战. 2.2 统计分析与数据挖掘的主要区别
  • 4个可以发送完整电子邮件的命令行工具
  • 《社会智能与综合集成系统》—第2章2.1节机器智能的发展
  • 《树莓派实战秘籍》——1.17添加重启按钮
  • 百度编辑器Ueditor 多图上传 图片在线管理的排序问题解决方案
  • 未来的C#之覆写放宽
  • 《机器人爱好者(第2辑)》——Robot Hut初印象
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Android框架之Volley
  • Apache Pulsar 2.1 重磅发布
  • ES6 ...操作符
  • es的写入过程
  • React16时代,该用什么姿势写 React ?
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • React-flux杂记
  • tensorflow学习笔记3——MNIST应用篇
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 大整数乘法-表格法
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 技术发展面试
  • 如何在GitHub上创建个人博客
  • 深入浅出webpack学习(1)--核心概念
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 自定义函数
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #HarmonyOS:Web组件的使用
  • (04)odoo视图操作
  • (3)(3.5) 遥测无线电区域条例
  • (9)STL算法之逆转旋转
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (离散数学)逻辑连接词
  • (六)vue-router+UI组件库
  • (篇九)MySQL常用内置函数
  • (四)Controller接口控制器详解(三)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)母版页和相对路径
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .Net Core缓存组件(MemoryCache)源码解析