Android 内存专项——常见问题之内存泄漏

一、前言

不管是以前的手机只有 256 M的内存时代,还是现在已经 8G 都快成普及的时代,内存优化一直以来都是开发过程中的一个难题。内存的泄漏以及不合理使用,直接带来的负面影响就是 APP 显得卡顿了,甚至最后造成 APP 在内存上出现 OOM 而导致的崩溃问题。

二、内存优化的常见问题

内存的问题繁多,但总结以及归纳出来,比较突出的可能就是这么几个点:内存泄漏、频繁GC,造成卡顿、新版本总体稳定增长、内存碎片。详见下图的描述。

内存分析-常见问题.jpg

三、内存泄漏

可能我们都知道什么是内存泄漏,但也不妨再看看关于内存泄漏的具体定义。以下先来看看《维基百科》对于内存泄漏的专业解释。

在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。
-- 摘自《维基百科》

而在 Android 中,我们讲内存泄漏,主要是指针对 Java 层的内存泄漏。Java 有自己的垃圾回收机制,理论上来说不需要我们关注内存的分配与回收。但有一些资源或者说就是对象,在使用过程中由于长时间被其他对象所引用,导致其得不到回收而一直占用着内存,从而引起了相对某个生命周期而言的内存泄漏。

以下是 Android 中常见的内存泄漏问题。

内存分析-内存泄漏.jpg

通过上图,可以看出,Android 中常见的内存泄漏基本都是由于长期持有 Activity 或者 某个组件的 Context 从而导致的内存泄漏。相应的常见解决方案如下。

内存泄漏-常见方案.jpg

你可能感兴趣的:(Android 内存专项——常见问题之内存泄漏)