内存泄漏()

1、内存泄露的本质

指当前对象在实际运行中超出了其本身意义上生命周期范围的,从而导致本该处于内存可回收状态的但实际上却一直处于不可回收状态的内存占用非正常现象。

2、常见的两种现象:

(1)异步回调中持有M,异步回调生命周期不可控,或者本身的生命周期长于Activity,导致内存泄漏。常见于Activity中handler、异步线程

(2)静态属性持有了M的强引用。常见于单例模式强引用外部的非静态对象。

3、具体导致内存泄漏的几个方面

(1)Context

单例模式中,引用的context尽量用非activity类型的context

(2)Handler

activity内部类handler,发送延迟消息

(3)非静态内部类

(4)Activity动态广播

finish、destory时取消广播。因为activity中动态注册的broadcastreceive,通过AMS强应用。

4、内存泄漏监控

(1)LeakMomery

(2)Profile

————————

1、内存泄露的本质

指当前对象在实际运行中超出了其本身意义上生命周期范围的,从而导致本该处于内存可回收状态的但实际上却一直处于不可回收状态的内存占用非正常现象。

2、常见的两种现象:

(1)异步回调中持有M,异步回调生命周期不可控,或者本身的生命周期长于Activity,导致内存泄漏。常见于Activity中handler、异步线程

(2)静态属性持有了M的强引用。常见于单例模式强引用外部的非静态对象。

3、具体导致内存泄漏的几个方面

(1)Context

单例模式中,引用的context尽量用非activity类型的context

(2)Handler

activity内部类handler,发送延迟消息

(3)非静态内部类

(4)Activity动态广播

finish、destory时取消广播。因为activity中动态注册的broadcastreceive,通过AMS强应用。

4、内存泄漏监控

(1)LeakMomery

(2)Profile