文档章节

ThreadLocal中弱引用解决内存泄露问题

Zero零_度
 Zero零_度
发布于 2015/08/08 10:03
字数 184
阅读 116
收藏 0

ThreadLocal中含有ThreadLocalMap静态内部类,该类的key值为当前线程对象,value为put进来的value,ThreadLocal的put、set方法都是操作ThreadLocalMap。

static class ThreadLocalMap {
        /**
         * The entries in this hash map extend WeakReference, using
         * its main ref field as the key (which is always a
         * ThreadLocal object).  Note that null keys (i.e. entry.get()
         * == null) mean that the key is no longer referenced, so the
         * entry can be expunged from table.  Such entries are referred to
         * as "stale entries" in the code that follows.
         */
        static class Entry extends WeakReference<ThreadLocal> {

Entry extends WeakReference

由于Entry继承WweakReference,则当Entry长时间没有使用,不需要等到Entry没有任何对象引用,就可被垃圾回收器回收,通过这样弱引用的方式,ThreadLocal解决了内存泄露的问题。

© 著作权归作者所有

Zero零_度
粉丝 69
博文 1267
码字总数 263854
作品 0
程序员
私信 提问
Java 200+ 面试题补充 ThreadLocal 模块

让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致。 本文是前文《Java 最常见的 200+ 面试题》的第一个补充模块。 1.ThreadLocal 是什么? ThreadLocal 是一个本...

王磊的博客
03/08
480
0
【转】Java 200+ 面试题补充 ThreadLocal 模块

本文是前文《Java 最常见的 200+ 面试题》的第一个补充模块。 让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致。 1.ThreadLocal 是什么? ThreadLocal 是一个本...

Jinlong_Xu
03/07
0
0
Java ThreadLocal的内存泄漏问题

ThreadLocal提供了线程独有的局部变量,可以在整个线程存活的过程中随时取用,极大地方便了一些逻辑的实现。常见的ThreadLocal用法有: - 存储单个线程上下文信息。比如存储id等; - 使变量线...

我爱春天的毛毛雨
2018/11/14
13
0
反驳:Threadlocal存在内存泄露

最近看到网上的一篇文章,分析说明ThreadLocal是如何内存泄露的. 但我不这么认为. ThreadLocal设计的很好,根本不存在内存泄露问题. 本文就结合图和代码的例子来验证我的看法. 网上的代码例子普...

xpbug
2013/03/13
7.7K
15
强引用、软引用、弱引用、虚引用的概念

强引用(StrongReference) 强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用: 1 2 只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存...

天王盖地虎626
06/19
33
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部