随着手机越来越强大,很多开发者都没考虑到性能优化的问题,等项目越做越大时,出现内存溢出,崩溃各种问题,之前有一个公司的后台,随着用户量越来越多用户使用时出现服务器异常,程序出现问题对公司而言,亏损的不只是资金,还有信誉,一旦信誉没有,你想拉都拉不回来,所以说性能优化策略十分重要,题外话有点多了,下面我们进入正题吧.
综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证
由于Android应用的沙箱机制,每个应用所分配的内存大小是有限度的,内存太低就会触发LMK(Low Memory Killer)机制,进而会出现闪退现象。如果要对内存进行优化,就需要先搞懂java的内存是如何分配和回收的
从以下几个方面简述:
1.Android 内存管理机制
Android 内存管理 = 对进程,对象,变量进行内存分配及回收
占用内存:进程,对象,变量
管理内存的角色(Android 系统分为3个层次 linux内核-->dalvik虚拟机-->appliance framework)
1.负责进程内存的角色:linux内核-->appliance framework
2.负责对象,变量管理的角色:dalvik虚拟机
2.常见的内存问题
常见的内存问题如下
1.内存泄露
2.内存抖动
3.图片Bitmap
相关
4.代码质量 & 数量
2.1 内存泄露
指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象
对应用程序的影响
容易使得应用程序发生内存溢出,即 OOM
- 发生内存泄露的本质原因
1.集合类2.Static
关键字修饰的成员变量
3.非静态内部类 / 匿名类
4.资源对象使用后未关闭
2.2 内存抖动
指内存大小不断浮动的现象
2.2.1 原因:程序频繁分配内存&垃圾收集机制(GC)频繁回收内存(大量临时的小对象频繁创建)
2.2.2 后果:垃圾收集机制(GC)频繁回收内存会导致卡顿,甚至内存溢出(OOM)
原因:大量临时的小对象频繁创建会导致内存碎片,使得当需要分配内存时,虽然总体上还是有剩余内存分配,当由于这些内存不连续.,导致无法整块分配,系统则视为内存不够,导致内存溢出OOM
2.3 图片Bitmap
相关
Android系统分配给每个应用程序的内存有限,而图片资源非常消耗内存(Bitmap),很多情况下,图片所占用的内存是整个APP内存的大部分,若对Bitmao的使用,内存管理稍有不当,则可能引发内存溢出,(OOM),容易造成应用崩溃
2.4 代码质量 & 数量
代码本身的质量(如 数据结构、数据类型、布局、渲染、动画等) & 数量(代码量的大小)可能会导致大量的内存问题,如占用内存大、内存利用率低等