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

com.xiaoleilu.hutool.util.ReferenceUtil Maven / Gradle / Ivy

There is a newer version: 3.3.2
Show newest version
package com.xiaoleilu.hutool.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}
 * 3. {@link PhantomReference}
 * 
* * @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 WeakReference<>(referent); case WEAK: return new WeakReference<>(referent); case PHANTOM: return new PhantomReference(referent, queue); default: return null; } } /** * 引用类型 * * @author looly * */ public static enum ReferenceType { /** 软引用,在GC报告内存不足时会被GC回收 */ SOFT, /** 弱引用,在GC时发现弱引用会回收其对象 */ WEAK, /** * 虚引用,在GC时发现虚引用对象,会将{@link PhantomReference}插入{@link ReferenceQueue}。
* 此时对象未被真正回收,要等到{@link ReferenceQueue}被真正处理后才会被回收。 */ PHANTOM; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy