在Java中,引用类型主要有四种,分别是:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。这些类型通常与垃圾回收机制有关,用来描述对象的生命周期和可达性。下面详细介绍每一种引用类型: 强引用(Strong Reference) 强引用是最常见的引用类型,当在代码中创建一个...
Java中SoftReference跟WeakRefrence的区别 在Java中,SoftReference和WeakReference都是用于解决内存管理和避免内存泄漏的引用类型。它们之间的主要区别在于垃圾回收器对它们的处理方式。 SoftReference(软引用)…
这种特性使得SoftReference适用于内存占用大但可临时牺牲的场景,如图片缓存,它能在内存紧张时动态清理部分缓存。相反,WeakReference的引用相对较弱。一旦对象仅被WeakReference引用,垃圾回收器在执行回收时会立即释放该对象,无需考虑内存状况。这使得WeakReference适用于那些可以随时重新创建的对象,如缓存管理,...
WeakReference, 顾名思义, 是一个弱引用, 当所引用的对象在 JVM 内不再有强引用时, GC 后 weak reference 将会被自动回收 1. @Test 2. public void 3. new 4. new 5. 6. assertSame(referent, weakRerference.get()); 7. 8. null; 9. System.gc(); 10. 11. /** 12. * 一旦没有指向 ref...
⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ⑵软引用(SoftReference) ...
java.lang.ref.SoftReference Soft Reference虽然和Weak Reference很类似,但是用途却不同。 被Soft Reference指到的对象,即使没有任何Direct Reference,也不会被清除。一直要到JVM内存不足时且 没有Direct Reference时才会清除,SoftReference是用来设计object-cache之用的。如此一来SoftReference不但可以把对象cache起来,也...
SoftReference 比较好理解,就是在 Memory 满的时候,OOM之前,SoftReference对象会被GC回收。比较适合做缓存。 WeakReference,会咋对象不在被其他 Strong Reference后很快被GC回收,常用的 WeakHashMap,其 key 是该 map 对其的 weak reference, 当 key不在有其他 strong reference时(此时key仍然是被 weakHashMap weak ...
WeakReference, 顾名思义, 是一个弱引用, 当所引用的对象在 JVM 内不再有强引用时, GC 后 weak reference 将会被自动回收 1.@Test2.publicvoidweakReference(){3.Object referent=newObject();4.WeakReference<Object>weakRerference=newWeakReference<Object>(referent);6.assertSame(referent,weakRerference.get(...
// 在内存不足时,softReference可能被垃圾回收 } } 3. 弱引用(Weak Reference): 弱引用在下一次垃圾回收时就会被回收,不考虑内存是否充足。 应用场景: 用于实现对象缓存,但不希望对象缓存在内存中太久。 注意事项: 当发生垃圾回收时,弱引用对象会被立即回收。
Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵), 这4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景 : 1. Strong Reference StrongReference 是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM ...