0
点赞
收藏
分享

微信扫一扫

java 中都有哪些引用类型

  1. 强引用(Strong Reference)
  • Java中默认声明的就是强引用,例如:Object obj = new Object();
  • 只要强引用存在,垃圾回收器将永远不会回收被引用的对象 ,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null。
  • 如果想让对象被回收,可以将对象置为null。
  1. 软引用(SoftReference): 软引用是用来描述一些非必需但仍有用的对象
  • 在内存足够的情况下,软引用不会被回收,只有在内存不足时,系统才会回收软引用对象。
  • 如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。 。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存等
  • 示例代码:byte[] buff = new byte[1024 * 1024]; SoftReference<byte[]> sr = new SoftReference<>(buff);
  1. 弱引用(WeakReference)
  • 弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。
  1. 虚引用(PhantomReference)(幽灵引用/幻影引用)
  • 无法通过虚引用去获取对象。用途:用于gc时返回一个通知。虚引用主要用于跟踪对象的生命周期。 虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收
  1. 引用队列(ReferenceQueue)
  • 引用队列可以与软引用、弱引用、虚引用一起配合使用。
  • 当垃圾回收器准备回收一个对象时,如果发现它还有引用,就会在回收对象之前,把这个引用加入到引用队列中。
  • 程序可以通过判断引用队列中是否加入了引用,来判断被引用的对象是否将要被垃圾回收,这样可以在对象被回收之前采取一些必要的措施。

java 中都有哪些引用类型_强引用

举报

相关推荐

0 条评论