国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > 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教程

关注

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

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

免费的黄冈网站有哪些平台| 我把刘姨俩腿扛在肩上是哪一集的 | 鸭王在线观看| 白日梦我小说全文免费阅读| 《交换做爰》在线观看| 性生交大片免费观看A片| 特级牲交大片20分钟-春梦AV| 喜爱夜蒲在线观看| 《法国空乘5》观看| 美国性伦1980禁忌禁忌| 空姐4免费高清完整版观看| 《人奶魔劫》完整版| 《地下偶像》樱花动浸| 《炸裂吧!巨棒》免费阅读漫画| 《甜蜜惩罚2》第二季的剧情简介| 《医务室的小秘密》动漫第一季免.. | 《老板娘2》完整版| 黏糊糊的你12集免费观看| 《帐篷里的秘密》动漫| 《请好好疼爱里面》免费观看 | 魔咒未删减| 国精产品一品二品国精HTC| 观看已满十八岁电视剧冲田杏梨| 被窝影院在线观看电视剧全职高手 | 水变油| 男人把J8放进女人的P里| 高清国产少女免费观看电视剧 | 非洲女人免费观看大全电视剧| 拔萝卜高清免费大全电视剧| 《办公室高潮秘书2》| 粗大的蘑菇头刮得又红又肿怎么办| 爸爸的大DJ小说| 《十二寡妇肉床艳史》| 狗和女人戴避孕套会传染吗| 久久久久久精品免费观看黑人动漫| 一边吃奶一边添P好爽视频| 《吃乳》在线播放| 欧美多人| 舌吻| 女性LOGO大全图片| 老阿姨2免费播放电视剧