2020年JAVA面试208题

Java中的弱引用是什么


Listen Later



1 Java中有4中引用,强引用、软引用、弱引用、虚引用。

强引用:普通new出来一个对象 ,都是强引用。

软引用:SoftReference类,当内存不足的时候,会被回收。

弱引用:WeakReference类,内存充足也会被垃圾回收。

虚引用:最脆弱的引用,记录一个对象已经被回收了。


2 当某个对象只被弱引用的时候,Java的垃圾回收机制就会回收该对象。

3 我们知道一个对象定义出来,在堆内存中为其开辟空间,在栈中存储该对象的引用。比如定义一个Car a1 = new Car() ; 这时候在堆中开辟了一块空间存储Car的数据,而a1则存储在栈中,引用堆中的Car。

4 如果我们设置 a1 = null,那么堆中的Car空间就不被栈引用了,Java的垃圾回收就会回收这块内存。

5 如果我们设置 a1 = new Car() ; a2 = a1 ; a1 = null ; 这时候虽然 a1 不引用堆中的Car,但a2 还引用着堆中的Car,那么堆中的Car空间是不会被回收的。

6 这时候就可以使用弱引用了。 a1 = new Car() ; a2 = new WeakReference(a1) ; a1 = null。

这时候 a1 不再引用堆中的Car空间,a2 是一个弱引用,虽然引用着堆中的Car空间,由于堆中的Car空间只被弱引用,因此Java的垃圾回收就会回收该空间。







...more
View all episodesView all episodes
Download on the App Store

2020年JAVA面试208题By 小崔爱读书


More shows like 2020年JAVA面试208题

View all
What's Next|科技早知道 by 声动活泼

What's Next|科技早知道

176 Listeners

声动早咖啡 by 声动活泼

声动早咖啡

263 Listeners

半拿铁 | 商业沉浮录 by 潇磊&刘飞

半拿铁 | 商业沉浮录

291 Listeners

天真不天真 by 杨天真本真

天真不天真

275 Listeners