ThreadLocal以及強軟弱虛引用

一、ThreadLocaljvm

ThreadLocal即線程本地,能夠實現每一個線程存入取出TreadLocal值互不影響。由於TheadLocal底層是用了一個Map存放數據,而這個Map是從當前這個Thread中獲取的,因此每一個線程以前數據不相通。線程

而這個Map裏面key是這個TreadLocal,因此一個線程只能在一個ThreadLocal中存放一個值,要想繼續存放就得多建立ThreadLocal。3d

 

這個Map底層是一個Entry,這個Entry又繼承自  WeakReference<ThreadLocal<?>>。因此Entry裏面的Key指向ThreadLocal的引用是一個弱引用,目的是爲了防止內存泄漏。對象

                                         

                                             

 

二、強軟弱虛引用blog

強引用:只要這個引用存在就不會被垃圾回收器回收繼承

軟引用:當引用爲空或者jvm中堆內存不夠就會被回收隊列

弱引用:只要垃圾回收器進行gc就會被回收內存

虛引用:用於堆外內存,當堆外內存中一個虛引用被回收,這個虛引用會進入一個隊列中,jvm經過這個隊列就知道有對象被回收了,就會收回這塊內存。內存泄漏

    固然虛引用也是碰到gc就會被回收。垃圾回收

相關文章
相關標籤/搜索