数据类型

1.8种基本数据类型

2.引用类型

强引用(Strong Reference)

  • 定义:强引用是最常见的引用类型,也是默认的引用类型。当一个对象具有强引用时,垃圾回收器不会回收该对象,即使内存不足,垃圾回收器也不会回收具有强引用的对象。
  • 特点:只要强引用存在,垃圾回收器就永远不会回收被引用的对象。
  • 示例Object obj = new Object(); 在这个例子中,obj就是对new Object()创建的对象的强引用。

软引用(Soft Reference)

  • 定义:软引用用于描述还有用但并非必需的对象。在内存不足时,垃圾回收器会回收具有软引用的对象以释放内存。
  • 特点:软引用是Java提供的一种较为灵活的引用方式,它允许对象在内存不足时被回收,但又不像弱引用那样在每次垃圾回收时都被回收。
  • 应用场景:缓存的实现。
  • 示例SoftReference<Object> softRef = new SoftReference<>(new Object());

弱引用(Weak Reference)

  • 定义:弱引用也用于描述还有用但并非必需的对象。与软引用不同的是,垃圾回收器只要发现了就会回收具有弱引用的对象,而不管内存是否足够。
  • 特点:弱引用的对象拥有更短暂的生命周期,比软引用更加容易被垃圾回收器回收。
  • 应用场景:某些需要避免内存泄漏但又不想永久持有对象的场景。
  • 示例WeakReference<Object> weakRef = new WeakReference<>(new Object());

虚引用(Phantom Reference)

  • 定义:虚引用也被称为幽灵引用,它的存在主要是为了跟踪对象被垃圾回收器回收的活动。虚引用不能单独使用,必须和引用队列(ReferenceQueue)一起使用。
  • 特点:虚引用无法通过get()方法获取到对象实例,它的主要作用是当对象被回收时,将这个虚引用加入到与之关联的引用队列中,以便收到对象被回收的通知。
  • 应用场景:在NIO中,虚引用被用于管理堆外内存。
  • 示例PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), referenceQueue);

自定义引用类型

虽然Java标准库中只明确提供了上述四种引用类型,但理论上,通过继承java.lang.ref.Reference类,开发者可以创建自定义的引用类型。然而,在实际应用中,自定义引用类型并不常见,因为Java提供的四种引用类型已经能够满足大部分需求。

posted @ 2024-08-01 09:07  Re-damancy^4029  阅读(44)  评论(0)    收藏  举报