背景
面试官:什么是强引用、软引用、弱引用、虚引用?
我说
java中为了控制对象的生命周期,在jdk1.2之后引入了强引用、软引用、弱引用、虚引用来灵活地控制对象的生命周期
。
强引用
强引用就是我们平时直接new出来的对象,举个栗子:Object strongReference = new Object();
所谓强引用,就是jvm宁愿抛出OOM也不愿意回收的对象
(当然是必须先是可达对象),所以强引用是造成OOM的主要原因之一
软引用
软引用就是被SoftReference
修饰的对象,举个栗子:SoftReference softObj = new SoftReference(new Object())
;
它会在发生gc的时候且内存不足时进行回收(回收的是引用的内容,比如栗子中的new Object),所以软引用适合用作缓存
,在内存充足的时候提示程序查询效率,