ThreadLocal内存泄漏常见要点解析

 更新时间:2020年11月17日 08:30:13   作者:dint  
这篇文章主要介绍了ThreadLocal内存泄漏常见要点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前段时间在网上看到了一篇关于ThreadLocal内存泄漏的文章

于是个人也研究了下ThreadLocal 对象,其原理是:

ThreadLocal 定义的变量值 会存储在当前线程的一个map集合中

这个map里面存储的是Entity对象 , Entity对象的key是当前ThreadLocal对象的弱引用,

value则是ThreadLocal变量的值

这就产生了一个问题:

如果ThreadLocal变量的强引用丢失了 map里面的弱引会失效 gc就回收ThreadLocal对象

那么 ThreadLocal的value 会在一直在map里面 直到Thread被回收 却因为key释放了没有办法获得

其实jdk针对此问题也做了一定范围的处理 就是key为null的entity会被覆盖或清除

当然我们使用的时候也应该注意 下面的几种用法都是有问题的:

1.同一个变量名多次new

ThreadLocal a=new ThreadLocal();

.....

a=new ThreadLocal();

2.变量局部产生

public void func(){

ThreadLocal a=new ThreadLocal();

}

for(int i=0;i<100;i++){

ThreadLoal b=new ThreadLocal();

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java实现简单点餐系统

    Java实现简单点餐系统

    这篇文章主要为大家详细介绍了Java实现简单点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java Jackson之ObjectMapper常用用法总结

    Java Jackson之ObjectMapper常用用法总结

    这篇文章主要给大家介绍了关于Java Jackson之ObjectMapper常用用法的相关资料,ObjectMapper是一个Java库,用于将JSON字符串转换为Java对象或将Java对象转换为JSON字符串,需要的朋友可以参考下
    2024-01-01
  • Eclipse配置maven环境的图文教程

    Eclipse配置maven环境的图文教程

    下面小编就为大家带来一篇Eclipse配置maven环境的图文教程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • SpringBoot结合Ajax实现登录页面实例

    SpringBoot结合Ajax实现登录页面实例

    大家好,本篇文章主要讲的是SpringBoot结合Ajax实现登录页面实例,感兴趣的同学赶快来看一看,对你有帮助的话记得收藏一下
    2022-02-02
  • Java TimedCache 带时间缓存工具类详解使用

    Java TimedCache 带时间缓存工具类详解使用

    工具类是包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期工具等各类常用工具包,本文将介绍带时间缓存工具类
    2021-10-10
  • 关于集合和字符串的互转实现方法

    关于集合和字符串的互转实现方法

    下面小编就为大家带来一篇关于集合和字符串的互转实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Java通过正则表达式获取域名简单示例

    Java通过正则表达式获取域名简单示例

    在Java中可以使用正则表达式来从字符串中匹配和提取域名,下面这篇文章主要给大家介绍了关于Java通过正则表达式获取域名的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 通过Java 程序获取Word中指定图片的坐标位置

    通过Java 程序获取Word中指定图片的坐标位置

    本文介绍通过Java程序获取Word文档中指定图片的坐标位置,程序运行环境是jdk1.8开发环境idea,通过java程序代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-05-05
  • servlet监听器的学习使用(三)

    servlet监听器的学习使用(三)

    这篇文章主要为大家详细介绍了servlet监听器学习使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • SpringBoot多环境配置及配置文件分类实例详解

    SpringBoot多环境配置及配置文件分类实例详解

    这篇文章主要介绍了SpringBoot多环境配置及配置文件分类,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10

最新评论