无论是之前的手机只有 256 M的内存时代,仍是如今已经 8G 都快成普及的时代,内存优化一直以来都是开发过程当中的一个难题。内存的泄漏以及不合理使用,直接带来的负面影响就是 APP 显得卡顿了,甚至最后形成 APP 在内存上出现 OOM 而致使的崩溃问题。优化
内存的问题繁多,但总结以及概括出来,比较突出的可能就是这么几个点:内存泄漏、频繁GC,形成卡顿、新版本整体稳定增加、内存碎片。详见下图的描述。设计
可能咱们都知道什么是内存泄漏,但也不妨再看看关于内存泄漏的具体定义。如下先来看看《维基百科》对于内存泄漏的专业解释。指针
在计算机科学中,内存泄漏指因为疏忽或错误形成程序未能释放已经再也不使用的内存。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,致使在释放该段内存以前就失去了对该段内存的控制,从而形成了内存的浪费。 -- 摘自《维基百科》cdn
而在 Android 中,咱们讲内存泄漏,主要是指针对 Java 层的内存泄漏。Java 有本身的垃圾回收机制,理论上来讲不须要咱们关注内存的分配与回收。但有一些资源或者说就是对象,在使用过程当中因为长时间被其余对象所引用,致使其得不到回收而一直占用着内存,从而引发了相对某个生命周期而言的内存泄漏。对象
如下是 Android 中常见的内存泄漏问题。blog
经过上图,能够看出,Android 中常见的内存泄漏基本都是因为长期持有 Activity 或者 某个组件的 Context 从而致使的内存泄漏。相应的常看法决方案以下。生命周期