一 什么是内存泄露
首先,在Android中我们所说的内存指的是Android系统分配给APP的内存的大小。对于不同的手机型号,对应的的不同ROM所分配的内存大小是不同的。PS:Android手机属于RAM平台。我们的堆栈存储区域就是在RAM中。
Android开发中的内存泄露一般指的是堆内存。我们的new出来的object存储在堆内存中,这些内存由GC进行回收管理。所以所谓的内存泄露,就是GC搞不定内存了。简单说就是GC不知道什么时候回收内存,或者说无法回收内存。
GC机制:Object不在有任何引用的时候就会回收。简单聊一下GC根节点。
1 JavaStack中引用的对象。
2 方法区中静态引用指向的对象。
3 方法区中常量引用指向的对象
4 Native方法中JNI引用的对象。
5 活跃的Thread。
Object如果在根节点的引用链上,那么它无法被GC回收。如果这个Object我们不使用,但仍然被引用,就造成了内存泄露。
二 如何解决内存泄露
1 Android Studio自带的工具可以简单分析内存泄露的位置。
2 LeakCanary也可以用来定位内存泄露。