美文网首页
引用的四种分类

引用的四种分类

作者: Mr_不靠谱_先森 | 来源:发表于2017-07-12 23:43 被阅读25次
  • 强引用(Strong Reference):JVM宁愿抛出OOM,也不会让GC回收的对象
  • 软引用(Soft Reference) :只有内存不足时,才会被GC回收。
  • 弱引用(weak Reference):在GC时,一旦发现弱引用,立即回收
  • 虚引用(Phantom Reference):任何时候都可以被GC回收,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否存在该对象的虚引用,来了解这个对象是否将要被回收。可以用来作为GC回收Object的标志。
image.png

注意Android中存在的差异
但是在2.3以后版本中,系统会优先将SoftReference的对象提前回收掉, 即使内存够用,其他和Java中是一样的。所以谷歌官方建议用LruCache(least recentlly use 最少最近使用算法)。会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定。其实LruCache就是用了很多的HashMap,三百多行的代码

在开发过程中,保存对象,这时我很可以直接使用LruCache来代替,Bitmap对象:

在Android开发过程中,我们常常使用HasMap保存对象,但是为了防止内存泄漏,在保存内存占用较大、生命周期较长的对象的时候,尽量使用LruCache代替HasMap用于保存对象。

而造成不能回收的根本原因就是:堆内存中长生命周期的对象持有短生命周期对象的强/软引用,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收。

相关文章

  • Java引用及其应用

    Java 引用分类 Java 中的引用分为四种,具体如下 强引用(StrongReference)强引用是使用最普...

  • 引用的四种分类

    强引用(Strong Reference):JVM宁愿抛出OOM,也不会让GC回收的对象 软引用(Soft Ref...

  • Android面试Java基础篇(四)

    问:Java中四种引用类型 答:四种引用类型分别为 强引用、弱引用、软引用、虚引用 强引用(StrongRefer...

  • java四种引用类型

    java中得四种引用 Java中有四种引用类型:强引用、软引用、弱引用、虚引用 强引用我们代码中常写,如: Obj...

  • Java中的四种引用类型

    一、Java中的四种引用类型 JDK 1.2 开始 Java 提供了四种引用类型,分别是强引用、软引用、弱引用、虚...

  • Android使用LeakCanary检测内存泄漏

    Java四种引用 在Java中,有四种不同的引用类型,分别是强引用(Strong Reference)、软引用(S...

  • 2018-07-04 HashMap与HashTable

    安卓最基本的数据结构 数组和(模拟指针)引用 java有四种引用分别为(强引用 软引用 弱引用 虚引用) 四种引用...

  • Java如何有效避免OOM:善于利用软引用和弱引用

    从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。 四种引用类型的作用 Java中提...

  • Java四种引用模式在Android种的应用

    Java中的引用一共有四种:强引用、软引用、弱引用 和 虚引用。下面来分别说一下这四种引用的用法及区别。 强引用(...

  • Java对象的四种引用类型

    从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。 Java中提供这四种引用类型主要...

网友评论

      本文标题:引用的四种分类

      本文链接:https://www.haomeiwen.com/subject/uimihxtx.html