強引用就是我們通常意義上的引用,類似」object object=new object();」,只要強引用在,就不會被gc。
軟引用,這種物件就是拿來jvm拿來防止記憶體溢位的乙個措施,當jvm要進行記憶體洩露的時候就會把這種物件進行**,如果記憶體還不夠,才會丟擲outofmemoryerror。
softreferencesoftreference=new softreference<>(new a());
弱引用,弱引用就更加悲劇了,軟引用是只要發生gc就會被**
weakreferenceweakreference=new weakreference<>(new a());
虛引用,虛引用是及其弱的乙個引用,你不能通過虛引用拿到它的物件,它的唯一作用就是可以通過虛引用感知到有沒有發生gc。
為什麼會存在這麼多引用了,我看了一些網上的部落格,importnew裡面有一篇部落格講出了其中的道理,軟引用和弱引用就是拿來促進gc的不讓它出現記憶體洩露的情況。
強引用,軟引用,弱引用
強引用 強引用設定為空,物件立馬會被 public class normalreference classm 軟引用 軟引用當引用存在的時候,只有當記憶體不足的時候才去 public class t0 softreference catch exception e system.out.printl...
四種引用 強引用 弱引用 軟引用和虛引用
j a執行gc判斷物件是否存活有兩種方式其中一種是引用計數。引用計數 j a堆中每乙個物件都有乙個引用計數屬性,引用每新增1次計數加1,引用每釋放1次計數減1。在jdk 1.2以前的版本中,若乙個物件不被任何變數引用,那麼程式就無法再使用這個物件。也就是說,只有物件處於 reachable 可達狀態...
java 軟引用 弱引用 虛引用
軟引用 用softreference類來標記,被軟引用標記的物件,只有在記憶體不足的時候,gc才會 該物件。弱引用 用weakreference類來標記,被弱引用標記的物件,在gc時,無論記憶體是否充足,都會被 掉。虛引用 用phantomreference來標記,虛引用需要有乙個與之關聯的引用佇列...