韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > java教程 > java ThreadLocal内存泄漏的解决

java ThreadLocal内存泄漏的解决

头像

小妮浅浅

2021-02-25 11:31:245948浏览 · 0收藏 · 0评论

在线程中有一种方法,频繁被大家所调用,那就是 ThreadLocal。不过在内存的处理上,ThreadLocal也会遇到比较棘手的问题,总是会产生一些内存的泄漏。本篇将会以一个泄漏实例为大家展开分析,也帮助大家了解泄漏中的一些情况,并提出ThreadLocal对应的解决办法。

1、泄漏实例

ThreadLocalMap的静态内部类Entry:

    static class Entry extends WeakReference<ThreadLocal<?>> {
        /** The value associated with this ThreadLocal. */
        Object value;
 
        Entry(ThreadLocal<?> k, Object v) {
            super(k);
            value = v;
        }
    }

ThreadLocalMap使用静态内部类Entry实现<k,v>存储,而Entry继承WeakReference类,所以ThreadLocalMap中的key其实是ThreadLocal的一个弱引用。

 正因为ThreadLocalMap以ThreadLocal的弱引用作为key,在这个ThreadLocal没有外部强引用的时候,会被GC。这时候,ThreadLocalMap会出现一个key为null的Entry,理所当然的,这个Entry的value将永远没办法被访问到。

在这种情况下,如果当前工作线程一直没有结束,那这个key为null的value因为被Entry强引用,而Entry被当前线程的ThreadLocalMap强引用,导致这个value永远无法被GC,造成内存泄漏。

2、解决办法

ThreadLocalMap的cleanSomeSlots(),expungeStaleEntry()方法都能清除key为null的value。 在ThreadLocal的set(),get(),remove()方法中,都会调用cleanSomeSlots()或expungeStaleEntry()来清除ThreadLocalMap中所有key为null的value。

以上就是java ThreadLocal内存泄漏的解决,当然这只能对内存泄漏起到一定的作用,毕竟只是一种清楚,不能保证一定不会出现更多Java学习指路:java教程

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

BOBO浏览器| 舒淇| HONORED| 美女和帅哥一起努力生产豆浆 | 《厨房激战5》完整版在线观看| 土豆| 女性左腿又开腿肚子视频大全| 9.1在线观看动漫| 器材室轮-J-(1):蒙着眼在...| 女儿与爸爸高清免费版电视剧| 一边做饭一边狂躁的原因分析| 台湾《洞门为君开》演员表| 双性少爷H奶大器粗H漫画| 兄弟的老婆4免费观看电视剧| 他的大手在秘密花园小说免费阅读| 法国人妻亂伦| 45岁老阿姨喷了三次尿素乳青| 妈妈的朋友2| 暴躁老妈高清免费观看电视剧| 女生给男生吃小头头 | 久久午夜国产精品WWW| 《俄罗斯空姐2(俄罗斯航空)》| 《魅魔之耻》1~4集免费看| 车后座啪啪刚进去就软了| 儿媳婉柔和父亲王大川的背景故事| 《家访的老师》动漫在线观看| 《人奶魔劫》完整版| 女士穿紧身裸体开裆光滑皮裤| GOOGLE CHROME| 无人区6高清免费追剧软件介绍| 巜强壮的公2做爰观看| 美丽儿媳分节阅读| 成品网站1688入门怎么样| 混乱的都市| 儿子耕种母亲的田地的收获| 每日大赛吃瓜爆料每日大赛聚集地| 闺蜜老公把我压在怀里| 学校停电被同桌C了3次| 为啥女的舒服了要摸自己的胸 | 《请好好疼爱里面》免费观看 | 国产一区二区三区