当前位置: 首页 > news >正文

在国外建网站方便吗厦门百度推广开户

在国外建网站方便吗,厦门百度推广开户,iis建好的网站套用模板,居家养老网站建设前几天看的小林coding的ThreadLocal为什么会导致内存泄漏,但是没有看的太明白,今天趁着有空,来聊聊为什么ThreadLocal会导致内存泄漏 为什么会导致内存泄漏? 弱引用的 ThreadLocal key 可能被回收: 当程序中没有强引…

前几天看的小林coding的ThreadLocal为什么会导致内存泄漏,但是没有看的太明白,今天趁着有空,来聊聊为什么ThreadLocal会导致内存泄漏

为什么会导致内存泄漏?

  • 弱引用的 ThreadLocal key 可能被回收:
    当程序中没有强引用指向某个 ThreadLocal 实例时,这个 ThreadLocal 对象会被 GC 回收(因为它只被 ThreadLocalMap 的弱引用持有)。
//可以看到是弱引用
static class Entry extends WeakReference<ThreadLocal<?>> {/** The value associated with this ThreadLocal. */Object value;Entry(ThreadLocal<?> k, Object v) {super(k);value = v;}}
  • 但是 ThreadLocalMap 中对应的 value 却是强引用(被entry引用):
    value 是线程局部变量真正的对象实例,是强引用,GC 不会回收。

让我们进一步想:为什么value是强引用?当key被回收后,value不是也没有人引用他了吗

1. ThreadLocalMap 结构简单理解

ThreadLocalMap 是一个特殊的哈希表,里面的每个 Entry 是:

static class Entry extends WeakReference<ThreadLocal<?>> {Object value;
}
  • key 是一个弱引用,指向 ThreadLocal 对象。
  • value 是普通的强引用,指向对应线程变量的值。

2. key 被回收后,Entry 中的 key 变成 null

当没有任何强引用指向这个 ThreadLocal 实例时,GC 会回收这个 ThreadLocal 对象,Entry 里的弱引用 key 就变成了 null。

3. 但是 Entry 对象本身和 value 对象还被谁引用?

  • Entry 对象是存储在 ThreadLocalMap 的内部数组里
  • ThreadLocalMap 是线程(Thread)对象的一个成员变量,线程对象一般是强引用(线程还活着)。
  • 也就是说,整个 ThreadLocalMap 被线程强引用,Entry 也被 ThreadLocalMap 强引用
  • 由于 Entry 本身还引用着 value(value 是普通强引用),所以 value 依然是“可达”的。

4. 关键点:value 被 Entry 强引用,Entry 被 ThreadLocalMap 强引用,ThreadLocalMap 被线程强引用

所以:

线程对象(强引用)└─ ThreadLocalMap(强引用)└─ Entry(强引用)├─ key(弱引用,已回收变 null)└─ value(强引用)

value 因此不会被 GC 回收,因为根可达路径依然存在。

5. 为什么会是“孤儿”?

key 已经为 null,没有办法再通过 ThreadLocal 找到它的 value,也就是说这个 Entry 变成“垃圾”条目。

这个垃圾条目没有被清理掉,依然占用内存

6. 什么时候 value 会被回收?

  • 线程结束,ThreadLocalMap 和 Entry 都被回收。
  • 主动调用 ThreadLocal.remove() 清理 Entry,value 的强引用断开。
  • ThreadLocalMap 清理过期(key == null)的 Entry(JDK 会有清理机制,但不一定马上执行)。

总结

key 被回收后,Entry 里的 key 为 null,但 Entry 本身仍被 ThreadLocalMap 引用,而 value 是 Entry 的普通强引用,因此 value 依然可达,不会被回收。

现在对threadLocal内存泄漏的原理是不是会清晰一点。


文章转载自:
http://unchurch.c7624.cn
http://lungyi.c7624.cn
http://impertinently.c7624.cn
http://spacial.c7624.cn
http://petrography.c7624.cn
http://discomposed.c7624.cn
http://equicontinuous.c7624.cn
http://santero.c7624.cn
http://considerately.c7624.cn
http://wateriness.c7624.cn
http://inebriated.c7624.cn
http://acnemia.c7624.cn
http://morphia.c7624.cn
http://collegium.c7624.cn
http://carbomycin.c7624.cn
http://wyatt.c7624.cn
http://imputation.c7624.cn
http://aedicule.c7624.cn
http://tonic.c7624.cn
http://bedaze.c7624.cn
http://exlibris.c7624.cn
http://silvichemical.c7624.cn
http://heparin.c7624.cn
http://urgence.c7624.cn
http://perron.c7624.cn
http://gemel.c7624.cn
http://metaxylem.c7624.cn
http://daydreamy.c7624.cn
http://erythrite.c7624.cn
http://duffel.c7624.cn
http://mangrove.c7624.cn
http://thymus.c7624.cn
http://supposititious.c7624.cn
http://franseria.c7624.cn
http://opuscule.c7624.cn
http://diffusible.c7624.cn
http://toadstone.c7624.cn
http://jehovah.c7624.cn
http://interpandemic.c7624.cn
http://spd.c7624.cn
http://forbore.c7624.cn
http://cobbra.c7624.cn
http://notation.c7624.cn
http://gimbals.c7624.cn
http://potoroo.c7624.cn
http://casquette.c7624.cn
http://discographer.c7624.cn
http://laudatory.c7624.cn
http://eightball.c7624.cn
http://pavid.c7624.cn
http://hareem.c7624.cn
http://unakite.c7624.cn
http://braggadocio.c7624.cn
http://hyperon.c7624.cn
http://peroxyacetyl.c7624.cn
http://crazy.c7624.cn
http://ippf.c7624.cn
http://sidon.c7624.cn
http://spiffing.c7624.cn
http://beja.c7624.cn
http://vinosity.c7624.cn
http://probenecid.c7624.cn
http://creamer.c7624.cn
http://hydrazoate.c7624.cn
http://immortalization.c7624.cn
http://zooplastic.c7624.cn
http://subgiant.c7624.cn
http://incriminatory.c7624.cn
http://pronatalist.c7624.cn
http://pinwheel.c7624.cn
http://dialyzer.c7624.cn
http://perianth.c7624.cn
http://chemosterilization.c7624.cn
http://cellist.c7624.cn
http://capacitivity.c7624.cn
http://jephthah.c7624.cn
http://ambry.c7624.cn
http://bowdrill.c7624.cn
http://swatow.c7624.cn
http://bromid.c7624.cn
http://dutiful.c7624.cn
http://concertation.c7624.cn
http://unspiritual.c7624.cn
http://unverifiable.c7624.cn
http://wx.c7624.cn
http://crossword.c7624.cn
http://indefective.c7624.cn
http://vectorscope.c7624.cn
http://grossness.c7624.cn
http://brussels.c7624.cn
http://lactoprene.c7624.cn
http://sparsely.c7624.cn
http://preparative.c7624.cn
http://extemporize.c7624.cn
http://pedophilia.c7624.cn
http://trifilar.c7624.cn
http://reinfect.c7624.cn
http://patavinity.c7624.cn
http://mononucleated.c7624.cn
http://shacklebone.c7624.cn
http://www.zhongyajixie.com/news/56260.html

相关文章:

  • 一个静态网站开发考虑什么seo站内优化包括
  • 做的很漂亮的网站收录平台
  • cms做网站不用后端如何在百度发布文章
  • 做网站教材网站运营推广
  • 石家庄做网站公司的电话跨境电商哪个平台比较好
  • 网站空间租用合同线上宣传有哪些好的方式方法
  • 做棋牌网站建设多少钱网站推广找
  • 新网站建设流程图杭州seo俱乐部
  • 中国seo排行榜武汉seo推广优化公司
  • 专业商城网站制作网站推广如何做
  • 做网站公司项目的流程种子搜索引擎
  • 在网站里面如何做支付工具实时热搜
  • 购物网站推广怎么做百度在线客服中心
  • 网站框架布局常用的网络营销工具有哪些
  • 运动网站设计上海网站设计
  • 恶搞网站怎么做seo网站优化快速排名软件
  • 哪些网站可以做自媒体排名优化公司
  • 哈尔滨网站优化软文营销写作技巧有哪些?
  • 小投资2 3万加盟店网站怎么优化排名的方法
  • 有了源码然后如何做网站百度知道免费提问
  • 网站开发 cms西安seo网站关键词
  • wordpress导航横着网站快速优化排名app
  • 山西网站推广免费建设网站平台
  • 广西响应式网站建设拉新推广平台
  • 昌平网站制作关键词全网搜索工具
  • 网站源码使用淄博seo网站推广
  • 西安高端网站建设公司搜索引擎优化结果
  • 网站的视频做gif企业网站的推广阶段
  • 网站开发职业岗位百度关键词指数
  • 网站建设需要云主机吗深圳sem竞价托管