内存抖动,内存泄漏几种情况和处理,强引用和软引用

内存泄露:

外部类持有Activity引用;

异步执行耗时任务,持有Activity,但是Activity已经finish;

Handler,Runable会隐式持有Activity,耗时操作未完成,Activity回收。

这些都是由于一个对象已经完成任务要被回收,但是由于其他对象持有当前对象引用,造成java不能进行GC,导致内存泄漏。

解决:

1.对某些对象采用软引用,在GC是可以回收;

2.BraodcastReceiver、Cursor最好在Base中进行注册和解注;

3.handler在 activity finish进行remove;

 

内存

JAVA是在JVM所虚拟出的内存环境中运行的,内存分为三个区:堆、栈和方法区
栈(stack):是简单的数据结构,程序运行时系统自动分配,使用完毕后自动释放。优点:速度快。
堆(heap):用于存放由new创建的对象和数组。在堆中分配的内存,一方面由java虚拟机自动垃圾回收器来管理,另一方面还需要程序员提供修养,防止内存泄露问题。
方法区(method):又叫静态区,跟堆一样,被所有的

猜你喜欢

转载自blog.csdn.net/qq_38998213/article/details/105346254