java的各種參照是什麼,從心理解。

2020-08-13 16:42:47

看了這篇部落格的靈感:https://blog.csdn.net/junjunba2689/article/details/80601729

JVM在 Java中負責記憶體的分配和回收,這是一種優勢(因爲它使用方便,程式不必再像使用 c那樣擔心記憶體),但同時也是一種缺點(靈活性不足)。針對記憶體操作靈活性差的問題,可採用軟參照等方法。
對於之前版本的 JDK1.2,當物件沒有被任何變數參照時,程式將不再使用該物件。即,只有物件處於可觸及狀態時,程式才能 纔能使用它。它就像日常生活一樣,從商店買了一些東西以後,如果有用的話就把它留着,或者扔到垃圾桶裏,讓清潔工拿走。一般來說,如果物品已經被扔進垃圾桶,要想再次回收利用是不可能的。
但是有時情況並非如此簡單,你可能會遇到像雞肋一樣的東西,吃得無味,棄之可惜。這東西現在沒有用了,留着會有地方用,但馬上扔掉也不劃算,因爲將來可能還會用到。對這種可有可無的東西,折中的辦法是:如果房子裡有足夠的空間,就先把它留在家裏;如果房子裡沒有足夠的空間,即使把房子裡所有的物品都清理掉,也不能再存放必要的生活用品,然後再把可有可無的東西扔掉。

在 JDK1.2發佈後,將物件的參照劃分爲四個級別,使得程式可以更靈活地控制其生命週期。4個層次從高到低依次爲:強參照,軟參照,弱參照,虛參照。


簡單理解: 

我們將JVM看作是一個國家,System.gc();就是城管,然後強參照就是本地人,軟參照就是移民者,弱參照就是黑戶,虛參照就是生病的黑戶,沒準哪天就沒了。

理解與一位老哥的評論。@justmemyselfand!zzz

覺得非常有意思就把它記錄下來。