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

哈尔滨建设网站门户上海装修公司排名榜单出炉

哈尔滨建设网站门户,上海装修公司排名榜单出炉,优化网站使用体验,专业做汽配的网站引子#xff1a; 内存泄漏#xff1a;是指本应该被GC回收的无用对象没有被回收#xff0c;导致内存空间的浪费#xff0c;当内存泄露严重时会导致内存溢出。Java内存泄露的根本原因是#xff1a;长生命周期的对象持有短生命周期对象的引用#xff0c;尽管短生命周期对象已… 引子 内存泄漏是指本应该被GC回收的无用对象没有被回收导致内存空间的浪费当内存泄露严重时会导致内存溢出。Java内存泄露的根本原因是长生命周期的对象持有短生命周期对象的引用尽管短生命周期对象已经不再需要但是因为长生命周期对象持有它的引用而导致不能被GC回收。 内存溢出就是我们常说的OOMOutOfMemoryError异常简单理解就是内存不够了通常发生在程序申请的内存超出了JVM中可用内存的大小就会抛出OOM异常。在JVM内存区域中除了程序计数器外其他的内存区域都有可能抛出OOM异常。 ThreadLocal很好地解决了线程之间需要数据隔离的问题同时也引入了另一个问题在应用程序中通常会使用线程池来管理线程那么线程的生命周期与应用程序的生命周期基本保持一致如果线程的数量很多随着程序的运行时间的推移ThreadLocal类型的变量会越来越多将会占用非常大的内存空间从而产生内存泄漏如果这些对象一直不被释放的话可能会导致内存溢出。 大家先看一下内存图 从图中可以看出ThreadLocal对象存在于堆中有栈中的强引用指向它也有ThreadLocalMap中的entry的弱引用键指向他。 “弱引⽤只要垃圾回收机制⼀运⾏不管JVM的内存空间是否充⾜都会回收该对象占⽤的内存。” 而随着程序的运行栈中ThreadLocal的强引用会消亡只剩下弱引用连接着ThreadLocal独享由于ThreadLocalMap.Entity中的key是弱引用所以堆中的ThreadLocal对象会被回收只要发生GC弱引用对象就会被回收但是ThreadLocalMap⽣命周期和Thread是⼀样的它这时候如果不被回收就会出现这种情况ThreadLocalMap的key没了value还在这就会造成了内存泄漏问题由弱引用引起的内存泄漏。 而对于线程来说线程的生命周期与应用程序的生命周期基本保持一致所以一直会存在Current Thread Refefence - Thread - ThreaLocalMap - Entry - value - Object的强引用这样value所强引用的Object对象迟迟得不到回收就会导致内存泄漏。 如何解决弱引用导致的内存泄露问题 ThreadLocalMap的设计中已经考虑到这种情况所以ThreadLocal的get()、set()、remove()的时候都会清除线程ThreadLocalMap里所有key为null的value。 一旦将value设置为null之后就斩断了引用与真实内存之间的强引用就能够真正的释放空间防止内存泄漏。 但是这只是一种被动的方式如果这些方法都没有被调用怎么办那你就每次使用完ThreadLocal变量之后执行remove方法。 总结ThreadLocalMap中的弱引用以及调用ThreadLocal各种方法后的清理只是增加了一层防护手段还是有可能会导致内存泄露真正想防止内存泄漏需要编码的规范使用完ThreadLocal后及时调用remove()方法释放内存空间。 那为什么还要维持一个弱引用呢 设置ThreadLocal对象的弱引用这样做的目的是确保ThreadLocal对象在没有其他强引用时可以被垃圾回收。 key设计成弱引⽤同样是为了防⽌内存泄漏这是另一个原因引起的内存泄漏。假如key被设计成强引⽤如果ThreadLocal Reference被销毁此时它指向ThreadLoca的强引⽤就没有了但是此时key还强引⽤指向ThreadLoca就会导致ThreadLocal不能被回收这时候就发⽣了内存泄漏的问题。 两个内存泄漏问题是不一样的 这里是ThreadLocal变量无法被回收导致内存泄漏 而弱引用导致的则是Value指向的object无法被回收导致内存泄漏 总结 首先如果让key使用强引用指向ThreadLocal则ThreadLocal对象无法被回收导致内存泄漏为了解决这个问题让key使用弱引用指向Threadlocal而这也会导致了Value无法被回收造成内存泄漏如何解决呢我们在使用完ThreadLocal对象后及时使用remove方法释放内存空间即可。
http://www.dnsts.com.cn/news/243181.html

相关文章:

  • 如何做网站 写代码登录入口
  • 湖南做网站 安全还踏实磐石网络简单个人网站欣赏
  • h5营销型网站抚州城乡建设厅网站
  • 做设计的兼职网站有哪些wordpress图片地址优化
  • 网站开发投标文件服务承诺部分蚌埠企业做网站
  • 嘉兴网站建设书生商友东台做淘宝网站
  • 网站建设与维护成本wordpress做博客什么主题好
  • 电子商务网站建设规划书的内容seo网站建设教程
  • 自己怎么建设网站快手推广软件免费版
  • 杭州市上城区建设局网站wordpress打赏积分
  • 哪个网站做国内销海外的wordpress 主题 模板
  • 成都网站建设哪个好什么是网站开发类课程
  • 网站建设设计制作公司武夷山景区网站建设优点
  • 佛山网站建设今天重大新闻事件
  • 金华网站建设luopan自己注册公司
  • 搜索点击软件seo分析案例
  • 厦门专业网站设计公司php网站建设网站
  • 宝安营销型网站制作重庆旅游网页设计
  • 网站制作app免费软件成都做小程序的公司排名
  • 网站怎么制作 推广模板做的网站不好优化
  • 为什么网站后台怎么换图片个体户网站备案
  • 简约 个人网站应用公园收费标准
  • 房屋设计师室内设计镇江seo网站
  • wordpress网站中英文切换wordpress 4.9
  • 广州英文网站建设做网站要注意些什么
  • 网站超级链接wordpress用户注册优化
  • 做网站 套用模板之后用什么改注册地址出租多少钱
  • 怎么做网站滑动图片部分h5成都装修公司投诉平台
  • 公司网站开发人员的的工资多少钱西昌市规划建设局网站
  • alexa怎么查询网站排名最有效的宣传方式