强引用 new Object
软引用 发生 oom 之前 会标记成可以回收 关键字 SoftRefence 适用于 cache 之类的场景可以一直存在又不会导致 oom
弱引用 只要发生 GC 弱引用在堆上的实例就一定会回收 关键字 WeakReference 指向的对象 适用于获取对象信息但是不影响对象 GC 的场景 如 debug 功能
虚引用 可以知道什么时候被回收
以下内容为转载
转载自:
版权声明:本文为 CSDN 博主「舞熊科技」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mxbhxx/article/details/9111711
- Strong Reference
StrongReference 是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM 内, 当没有任何对象指向它时 GC 执行后将会被回收
@Test
public void strongReference() {
Object referent = new Object();
/**
* 通过赋值创建 StrongReference
/
Object strongReference = referent;
assertSame(referent, strongReference);
referent = null;
System.gc();
/*
* StrongReference 在 GC 后不会被回收
*/
assertNotNull(strongReference);
}
2. WeakReference & WeakHashMap
WeakReference, 顾名思义, 是一个弱引用, 当所引用的对象在 JVM 内不再有强引用时, GC 后 weak reference 将会被自动回收
@Test
public void weakReference() {
Object referent = new Object();
WeakReference