Java中的引用,一共分爲以下四種。
一、強引用
默認的對象是強引用。
對象還在被引用,就不會被回收。
即使內存已經不夠了,也不會被回收。
二、軟引用:SoftReference
當內存喫緊的時候,纔會被回收。
可以用在緩存的場景,內存足夠時進行緩存,內存都不夠了,就不用緩存了。
三、弱引用WeakReference
不管內存是否不夠用。GC的時候,就會被回收。
ThreadLocal就是使用的弱引用來實現的。
四、虛引用:PhantomReference
必須與ReferenceQueue一起使用。
當要被回收的時候,會先將其放入ReferenceQueue中。
用戶線程通過獲取此隊列中信息,可以知道哪些弱引用要被回收,可以進行一些資源回收的工作。
比如直接內存就是使用此辦法管理的,Java只是持有直接內存的虛引用,當要回收的時候,我們可以在關聯隊列中獲取消息,進而進行對外內存的處理。