Android 避免内存泄漏-引用模式

概念

  • 内存泄露:Android 为每个应用分配了一定大小的内存,JVM会定时的回收它认为没有用的内存,当代码不规范时会导致一些内存无法被回收占用没存资源,当内存资源不足时一些内存也无法被回收,JVM就会抛出内存泄漏异常
  • 内存溢出:Android 为每个应用分配了一定大小的内存,当Android应用new出一个对象时会向系统申请内存,这时如果系统分配给应用的内存不足(内存泄露导致内存无法释放一直占用内存资源)就会抛出内存溢出异常

引用模式

  • 强引用:对象只要有引用就不会被回收

Object obj = new Object()

  • 软引用:当系统发现快要发生内存溢出时,会回收该类的对象。
    可以配合引用队列ReferenceQueue联合使用,如果软引用所引用的对象被回收掉JVM会把该软引用存放到已关联的ReferenceQueue中,等到系统将要抛出OutOfMemoryError的时候就会去回收ReferenceQueue中的软引用(ReferenceQueue回收机制是优先回收不常用的)

new Handler(new SoftReference<>(activity))

  • 弱引用:jvm会不定时gc,在下一次GC时会被回收

new Handler(new WeakReference<>(activity))

  • 虚引用:引用关系最弱的

new Handler(new PhantomReference<>(activity))

你可能感兴趣的:(Android 避免内存泄漏-引用模式)