threadlocal 为什么使用弱引用而不是强引用
时间: 2023-05-19 19:05:16 浏览: 78
ThreadLocal 使用弱引用是为了避免内存泄漏。如果使用强引用,当 ThreadLocal 变量被使用完后,如果没有手动删除对应的 Entry 对象,那么这个 Entry 对象将一直存在于 ThreadLocalMap 中,而这个 Entry 对象持有的 ThreadLocal 对象也将一直存在,这就会导致内存泄漏。使用弱引用可以让 Entry 对象在没有强引用指向时被垃圾回收,从而避免内存泄漏。
相关问题
为什么threadlocal不是弱引用
ThreadLocal并不是弱引用的主要原因是为了避免内存泄漏问题。如果ThreadLocal是弱引用,那么在外界对ThreadLocal的强引用回收后,ThreadLocal可能会被垃圾回收,但是与之对应的变量副本(即ThreadLocalMap中的value)还存在,并且无法被及时清理和回收,从而导致内存泄漏。为了避免这个问题,ThreadLocal使用了弱引用来解决。弱引用指向的对象在下次垃圾回收时会被回收,这样在ThreadLocal没有强引用指向时,ThreadLocalMap中的对应Entry的key也会被回收,从而确保变量副本也可以被及时清理和回收,避免内存泄漏的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [关于ThreadLocal为什么采用弱引用的理解](https://blog.csdn.net/m0_49908016/article/details/120497770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [ThreadLocal,你真的了解吗?](https://download.csdn.net/download/weixin_38607864/13742056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
threadlocal为什么弱引用
ThreadLocal是弱引用是因为它的设计初衷是为了解决线程安全问题,而不是为了存储大量数据。因此,如果ThreadLocal引用的对象没有被其他强引用持有,那么这个对象就会被垃圾回收掉,而不会造成内存泄漏。如果ThreadLocal使用的是强引用,那么当ThreadLocal被回收时,它引用的对象也会被回收,这就会造成意外的数据丢失。因此,ThreadLocal使用弱引用是为了保证线程安全的同时,也避免了内存泄漏的问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)