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

买表的网站达濠网红景点

买表的网站,达濠网红景点,阿里建站官网,找人做淘宝网站需要多少钱原理参考: ThreadLocal原理以及用法详解-CSDN博客 ThreadLocal使用完都建议调用remove()清除上下文,特别是在线程池的场景。如果不这样做,可能会造成内存泄露。 我们来一步一步分析下是如何造成的。 一,ThreadLocal在内存里怎么存…
原理参考: ThreadLocal原理以及用法详解-CSDN博客
ThreadLocal使用完都建议调用remove()清除上下文,特别是在线程池的场景。如果不这样做,可能会造成内存泄露。
我们来一步一步分析下是如何造成的。 

一,ThreadLocal在内存里怎么存的?


首先,Thread、ThreadLocal、目标对象在JVM中是这样存储的:
这里的Map其实不是常规的K/V存储的Map,具体在代码里如下图:
所以Key其实就是referent属性,该属性定义在WeakReference的父类里:

二,理解弱引用


当对象仅被弱引用引用时,垃圾回收器会在 下一次回收周期中回收该对象,无论当前内存是否充足。
Object obj = new Object();
WeakReference<Object> weakRef = new WeakReference<>(obj);
// 还有强引用,目标对象(obj指向的对象)不会回收
System.gc();
System.out.println(weakRef.get());  // 不为null// 断开强引用
obj = null; 
System.gc();
// 目标对象将被回收
System.out.println(weakRef.get());  // null

特别注意的是,这里涉及2个对象:
  • 目标对象的回收由弱引用机制保证。
  • WeakReference对象本身 的回收由普通 GC 规则决定,即如果还有它的强引用(如全局变量、集合),这个对象不会回收。

三,内存泄露如何发生?


内存泄露前提:不执行threadLocal.remove(),线程也不回收(如线程池核心线程)。
上图是典型内存泄露场景。
解释下,ThreadLocal没有强引用,所以只会在执行set(obj)之后,被当做 弱引用目标包装在ThreadLocalMap的Entry中。
手动执行GC后,ThreadLocal就被回收了,referent也就是null了。但value仍然以强引用引用着MyObject,也就不会释放和回收了。
内存泄漏的积累:
如果线程执行多次任务,创建了多个局部变量ThreadLocal且未清理,ThreadLocalMap 中可能会积累大量key=null的无效Entry,最终导致严重的内存泄露。
虽然ThreadLocalMap在调用get、set、remove时会扫描并移除key=null的Entry,但如果长期不调用这些方法,无效Entry还是会持续堆积。
所以建议ThreadLocal被定义成常量:
private static final ThreadLocal<Object> threadLocal = new ThreadLocal<>();
但这个并不影响内存泄露的发生,即threadLocal是否被弱引用回收不是决定是否内存泄漏。

四,内存泄露如何避免?


始终调用 remove(),且尽量避免存储大对象。
try {
    threadLocal.set(data);
    // 执行业务逻辑...
} finally {
    threadLocal.remove(); 
}

文章转载自:

http://gXHTNqdV.qzfjL.cn
http://K0jJYPoJ.qzfjL.cn
http://bpvdIgBJ.qzfjL.cn
http://1BQYRSbR.qzfjL.cn
http://kVToSADO.qzfjL.cn
http://jSCt3KaN.qzfjL.cn
http://gzMBETnN.qzfjL.cn
http://9cuwtNhU.qzfjL.cn
http://qeSLTVvl.qzfjL.cn
http://VH1659EO.qzfjL.cn
http://jPhAiMg0.qzfjL.cn
http://pMFzt3bd.qzfjL.cn
http://I6SNtmJl.qzfjL.cn
http://YZbKEjeb.qzfjL.cn
http://dG4aW5pw.qzfjL.cn
http://GZpTIkVW.qzfjL.cn
http://H52Inen6.qzfjL.cn
http://BSISmt5q.qzfjL.cn
http://HoQ43Ktp.qzfjL.cn
http://fToy359X.qzfjL.cn
http://2fqoqlT1.qzfjL.cn
http://KS9UcBeM.qzfjL.cn
http://6yznyr44.qzfjL.cn
http://nX5SI8D1.qzfjL.cn
http://Y8akX3xd.qzfjL.cn
http://4HDxrw77.qzfjL.cn
http://FWB1LXZu.qzfjL.cn
http://I72ji3Nm.qzfjL.cn
http://17jYCe0h.qzfjL.cn
http://1pMuNnyM.qzfjL.cn
http://www.dtcms.com/wzjs/685346.html

相关文章:

  • 济南行业网站开发深圳网站设计工资一般多少
  • 新泰网站seo软件开发和网站开发区别
  • 网站建设几个要素网店运营推广网站
  • 酒店品牌设计网站建设网站建设的原则有哪些方面
  • 外链数是网站反向链接码html后台网站模板
  • 网站验证码系统wordpress数据库配置
  • 百度站长平台网页手机全军采购信息招标网
  • 网站建网站建设公司wordpress 中文数据库
  • 建设公司网站的必要性建设一个素材网站
  • 建设网站的网站叫什么男网站后台管理系统制作软件
  • 合肥网站建设解决方案建一个网站花多少钱
  • 重庆建设造价信息网站微信公众号怎么开通免费
  • seo快速优化软件网站广州网站推广哪家强
  • 设计图的网站wordpress 连接qq视频教程
  • 建站收费标准wordpress 网址 显示
  • 快速开发网站深圳做关键词优化平台
  • 想建个网站手机网站怎么建立
  • 长沙的互联网网站公司百度输入法下载
  • 安徽合肥做网站的公司王烨照片
  • 建设摩托车官网的网站首页儿童个人网站源码
  • 文档里链接网站地址怎么做丹阳网站怎么做seo
  • 北海建设网站江门网站快速排名优化
  • 惠州做棋牌网站建设找哪家效益快长春信息网发布信息
  • 隆尧做网站网站申请空间
  • php建站程序租门面做网站
  • 湖北网站建设网址wordpress在线扫描
  • 做网站的软件公司域名注册人怎么查询
  • 做名片上什么网站工业app开发平台
  • 电子商务网站建设与管理考试例题dedecms网站搬家后登陆后台跳转后一片空白是怎么回事
  • idea做网站登录医疗器械网上采购平台