背景
面试官:什么是强引用、软引用、弱引用、虚引用?
我说
java中为了控制对象的生命周期,在jdk1.2之后引入了强引用、软引用、弱引用、虚引用来灵活地控制对象的生命周期。

强引用
强引用就是我们平时直接new出来的对象,举个栗子:Object strongReference = new Object();
所谓强引用,就是jvm宁愿抛出OOM也不愿意回收的对象(当然是必须先是可达对象),所以强引用是造成OOM的主要原因之一

软引用
软引用就是被SoftReference修饰的对象,举个栗子:SoftReference softObj = new SoftReference(new Object());
它会在发生gc的时候且内存不足时进行回收(回收的是引用的内容,比如栗子中的new Object),所以软引用适合用作缓存,在内存充足的时候提示程序查询效率,

本文介绍了Java中的四种引用类型:强引用、软引用、弱引用和虚引用。强引用是最常见的引用,不会被GC回收。软引用在内存不足时会被回收,用于提高系统性能。弱引用在GC时会被回收,如ThreadLocal的实现。虚引用不直接持有对象,仅用于跟踪对象被回收的状态,常与引用队列配合使用,以便在对象被回收时接收通知。
最低0.47元/天 解锁文章
486

被折叠的 条评论
为什么被折叠?



