jdk、第三方jar中WeaReference的应用

本文探讨了Java中弱引用的应用实例,包括ThreadLocal中Entry类的实现方式以及ResourceBundle中LoaderReference类的设计,展示了如何利用弱引用来避免内存泄漏并有效管理资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 ThreadLocal.ThreadLocalMap的Entry继承了WeakReference< ThreadLocal > ,即ThreadLocal对象为弱引用,Entry以ThreadLocal对象的弱引用为key:

static class Entry extends WeakReference<ThreadLocal> {
    /** The value associated with this ThreadLocal. */
    Object value;

    Entry(ThreadLocal k, Object v) {
        super(k);
        value = v;
    }
}

2 ResourceBundle的LoaderReference继承了WeakReference< ClassLoader > ,持有一个ClassLoader对象的弱引用:

/**
 * References to class loaders are weak references, so that they can be
 * garbage collected when nobody else is using them. The ResourceBundle
 * class has no reason to keep class loaders alive.
 */
private static class LoaderReference extends WeakReference<ClassLoader>
                                     implements CacheKeyReference {
    private CacheKey cacheKey;

    LoaderReference(ClassLoader referent, ReferenceQueue<Object> q, CacheKey key) {
        super(referent, q);
        cacheKey = key;
    }

    public CacheKey getCacheKey() {
        return cacheKey;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值