首先科普一下,Java對象是引用變型的,它會用兩種內(nèi)存區(qū):堆內(nèi)存、棧內(nèi)存。Java對象是存儲在堆內(nèi)存中的,而對此對象的引用(理解為變量)存儲在棧內(nèi)存中。
比如:Stringstr=newString("字符串");這行代碼用的是兩塊內(nèi)存,newString("字符串")存在堆內(nèi)存中,str變量存儲在棧內(nèi)存中。
當(dāng)我們設(shè)置對象為null后(即:str=null),此時str變量與堆內(nèi)存中的數(shù)據(jù)就斷開聯(lián)系了,GC算法會在必要時回收str及堆內(nèi)存中的對象,但這個GC任何回收我們是無法干預(yù)的。
總結(jié)說就是: