强引用、弱引用、软引用
时间: 2023-10-09 12:09:44 浏览: 50
强引用是指在代码中显式地声明对某个对象的引用。在 Java 中,使用关键字 `new` 创建的对象都是用强引用引用的。如果一个对象只有强引用,那么它就不会被垃圾回收器回收,即使它没有任何有意义的引用也不例外。
弱引用是指对象的引用,但是并不会妨碍垃圾回收器对该对象的回收。当垃圾回收器执行的时候,只要发现对象只有弱引用,就会回收该对象。在 Java 中,可以使用 `WeakReference` 类来实现弱引用。
软引用是指对象的引用,它在内存不足的情况下才会被回收。也就是说,只有在 JVM 内存不足时,才会回收具有软引用的对象。在 Java 中,可以使用 `SoftReference` 类来实现软引用。
相关问题
强引用 弱引用 软引用
强引用指的是一个对象被强引用指向(被一个引用直接指向),它就不会被垃圾回收器回收。只有在没有任何强引用指向该对象的时候,该对象才会被回收。
弱引用是一种指向对象的引用,但是不会阻止该对象被垃圾回收。如果一个对象只有弱引用指向它,那么垃圾回收器会在下一次垃圾回收的时候将该对象回收。
软引用是弱引用的一种扩展,通常用于实现缓存功能。在使用软引用指向一个对象时,当内存不足时,该对象可能会被回收;但如果内存充足,该对象不会被回收,可以通过软引用再次获取到该对象。
什么是强引用弱引用软引用虚引用
强引用、弱引用、软引用、虚引用都是Java中用于垃圾回收的概念。
强引用:如果一个对象具有强引用,那么垃圾回收器就不会回收这个对象。即使内存不足,JVM也不会回收它,而是抛出OutOfMemoryError错误。例如:Object obj = new Object()。
弱引用:如果一个对象只具有弱引用,那么垃圾回收器可以在任何时候回收它。弱引用通过WeakReference类实现。例如:WeakReference<Object> weakRef = new WeakReference<>(new Object())。
软引用:如果一个对象只具有软引用,那么垃圾回收器只有在内存不足的情况下才会回收它。软引用通过SoftReference类实现。例如:SoftReference<Object> softRef = new SoftReference<>(new Object())。
虚引用:如果一个对象只具有虚引用,那么它就相当于没有引用。虚引用通过PhantomReference类实现。虚引用的作用是跟踪对象被垃圾回收的状态,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收之前把这个虚引用加入到与之关联的ReferenceQueue中。例如:PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), new ReferenceQueue<>())。