再谈Finalizer对象--大型App中内存与性能的隐性杀手
在上一篇《提升Android下内存的使用意识和排查能力》的文章中,多次提到了Finalizer对象。也可以看到该对象的清理至少是需要两次GC才能完成,而在Android5.0,尤其是6.0以后的系统中,对于该对象的回收变得更加的慢。我们在开发的时候往往关注内存的分配、泄漏,却容易忽视Finalizer对象,其实在大型App中,该对象是引起内存和性能问题的一个不可忽视的元...
App的内存优化
这篇文章是笔者在开发App过程中发现的一些内存问题, 然后学习了YYKit框架时候也发现了图片的缓存处理 (YYKit 作者联系了我, 说明了YYKit重写imageNamed:的目的不是为了内存管理, 而是增加兼容性, 同时也是为了YYKit中的动画服务). 以下内容是笔者在开发中做了一些实验以及总结. 如有错误望即时提出, 笔者会第一时间改正. 文章的前篇主要是对两种不同的UIImag...
实战Hybird app:内存溢出与优化
主要的问题: heap过大,内存低性能差的机子上引起奔溃,直接退出 关于web app的优化,不仅仅只是js方面,包括HTML布局嵌套,CSS的属性使用,数据的读取,还有浏览器的重排与回流之类的这里就不讨论了, 本章涉及的是脚本代码引发的性能问题,更进一步说就是闭包带来的内存泄露 关于性能: 首先我不得不承认一个事实,移动端的性能跟PC端,那完全不是一回事 比如用innerHTML绘...

《移动App测试的22条军规》——第23章,第12节测试微信App中高内存使用的功能
本节书摘来自异步社区《移动App测试的22条军规》一书中的第23章,第12节测试微信App中高内存使用的功能,作者 黄勇,更多章节内容可以访问云栖社区“异步社区”公众号查看 23.12 测试微信App中高内存使用的功能微信App支持在App内存储视频、音频和图片。当这些存储的资源很多,占用空间很大时,会对微信App自身的性能产生影响。 从设计上说,微信App限制用户只能发送60s内的语音,默认.....
移动App性能测评与优化1.5.2 一个类的内存消耗
1.5.2 一个类的内存消耗 首先,如果我们在代码中要使用一个类,例如以下代码: Foo f = new Foo(); 虚拟机在执行到这步时会做什么呢? 第一步是loadClass操作,将类信息从dex文件加载进内存: 1)读取.dex mmap中class对应的数据。 2)分配native-heap和dalvik-heap内存创建class对象。 3)分配dalvik-LinearAlloc存....
移动App性能测评与优化1.5 案例:优化dex相关内存
1.5 案例:优化dex相关内存 上一节提到,随着代码功能的增加,代码复杂度也在不断地变大,这时我们往往会发现Dalvik Other和Dex Mmap这两部分消耗的内存也在不断增加。在之前的例子里,我们知道这两部分的内存已经接近总内存的一半。在Dalvik Heap已经充分优化的情况下,我们有必要继续研究这部分内存如何优化。 我们已经知道Dalvik Other存放的是类的数据结构及关系,而D....
移动App性能测评与优化1.4.3 zygote共享内存机制
1.4.3 zygote共享内存机制 上一小节介绍了应用各部分内存的含义,读者对dumpsys meminfo输出的大部分数据都能够有所理解。但dumpsys meminfo工具还会输出Heap Size/Alloc/Free部分的数值。我们知道这些数值是Dalvik虚拟机统计的内存堆的使用量,但这些数值是如何对应到Pss内存上的?比如Heap Alloc和Heap Pss往往相差不远,那是不是....
移动App性能测评与优化1.4.1 从物理内存到应用
1.4.1 从物理内存到应用 我们首先要了解系统的内存机制,搞清楚物理内存是如何被分配到各个进程的,以及共享内存的机制,等等,理解这些机制对测试及优化都会有很大帮助。 根据Google提供的Android整体架构图,如图1-17所示,可以看到Android系统是基于Linux内核的,因此底层的内存分配及共享机制与Linux基本相同。但由于Android是为移动设备设计的,所以整套架构为了符合移动....
移动App性能测评与优化1.4 进阶:内存原理
1.4 进阶:内存原理 在上一节里,我们通过深入调查Dalvik虚拟机的方式,解决了Dalvik Heap Pss消耗内存过高的问题。除了Dalvik Heap Pss部分之外,应用还有其他许多消耗内存的部分。本节主要介绍其他部分的内存是如何被分配和消耗的。 同样以我们的应用为例,在几个版本之后,新加入了一个缓存功能。缓存功能会预先取一些手机的信息,并放在内存中供其他功能使用,这样可以减少后续功....
有没有必要把app的数据库加入内存中,进行读写
有没有必要把app的数据库加入内存中,进行读写 最近遇到项目,要我们把数据库加入内存中进行读写,发现手机内存很快用光。 其实,有没有必要把它sqlite的数据库所有数据加入到内存中呢?
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
mPaaS 移动开发平台
mPaaS 源于蚂蚁集团金融科技,为 App 开发、测试、运营及运维提供云到端的一站式解决方案,致力于提供高效、灵活、稳定的移动研发、管理平台。 官网地址:https://www.aliyun.com/product/mobilepaas/mpaas
+关注