All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.core.util.ReferenceUtil Maven / Gradle / Ivy

Go to download

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

There is a newer version: 5.8.34
Show newest version
package cn.hutool.core.util;

import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;

/**
 * 引用工具类,主要针对{@link Reference} 工具化封装
* 主要封装包括: *
 * 1. {@link SoftReference} 软引用,在GC报告内存不足时会被GC回收
 * 2. {@link WeakReference} 弱引用,在GC时发现弱引用会回收其对象
 * 3. {@link PhantomReference} 虚引用,在GC时发现虚引用对象,会将{@link PhantomReference}插入{@link ReferenceQueue}。 此时对象未被真正回收,要等到{@link ReferenceQueue}被真正处理后才会被回收。
 * 
* * @author looly * @since 3.1.2 */ public class ReferenceUtil { /** * 获得引用 * * @param 被引用对象类型 * @param type 引用类型枚举 * @param referent 被引用对象 * @return {@link Reference} */ public static Reference create(ReferenceType type, T referent) { return create(type, referent, null); } /** * 获得引用 * * @param 被引用对象类型 * @param type 引用类型枚举 * @param referent 被引用对象 * @param queue 引用队列 * @return {@link Reference} */ public static Reference create(ReferenceType type, T referent, ReferenceQueue queue) { switch (type) { case SOFT: return new SoftReference<>(referent, queue); case WEAK: return new WeakReference<>(referent, queue); case PHANTOM: return new PhantomReference<>(referent, queue); default: return null; } } /** * 引用类型 * * @author looly * */ public enum ReferenceType { /** 软引用,在GC报告内存不足时会被GC回收 */ SOFT, /** 弱引用,在GC时发现弱引用会回收其对象 */ WEAK, /** * 虚引用,在GC时发现虚引用对象,会将{@link PhantomReference}插入{@link ReferenceQueue}。
* 此时对象未被真正回收,要等到{@link ReferenceQueue}被真正处理后才会被回收。 */ PHANTOM } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy