Java 高级面试问题及答案
以下是几个Java高级面试中可能会问到的问题,以及对应的答案。
问题1: Java中的强引用、软引用、弱引用和虚引用分别是什么?
答案:
在Java中,对象的引用分为四种类型:
-
强引用:最常见的引用类型,如果一个对象具有强引用,那么它永远不会被垃圾回收器回收,直到这个引用被显式地设置为
null
。 -
软引用:用来描述一些有用但非必需的资源,如缓存。在系统内存不足时,软引用对象会被垃圾回收器回收。软引用通过
java.lang.ref.SoftReference
类实现。 -
弱引用:比软引用更弱的一种引用,它同样用于描述非必需的对象。弱引用对象只能生存到下一次垃圾回收发生之前,无论当前内存空间足够与否,都会回收。弱引用通过
java.lang.ref.WeakReference
类实现。 -
虚引用:最弱的一种引用,一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来获取一个对象的实例。对于这种类型的引用,垃圾回收器回收对象时会收到一个系统通知。虚引用主要用于跟踪对象被垃圾回收的活动,虚引用需要和
java.lang.ref.ReferenceQueue
一起使用。通过java.lang.ref.PhantomReference
类实现。