1.7.0_79

  眾所周知,Java是一門(mén)不用程序員手動(dòng)管理內(nèi)存的語(yǔ)言,全靠JVM自動(dòng)管理內(nèi)存,既然是自動(dòng)管理,那必然有一個(gè)垃圾內(nèi)存的回收機(jī)制或者回收算法。本文將介紹幾種常見(jiàn)的垃圾回收(下文簡(jiǎn)稱(chēng)GC)算法。

  在Java堆上分配一個(gè)內(nèi)存給實(shí)例對(duì)象時(shí),此時(shí)在虛擬機(jī)棧上引用型變量就會(huì)存放這個(gè)實(shí)例對(duì)象的起始地址。

Object obj = new Object();

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

  現(xiàn)在如果我們將變量賦值為null

obj = null;

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

  此時(shí)可以看到Java堆上的實(shí)例對(duì)象無(wú)法再次引用它,那么它就是被GC的對(duì)象,我們稱(chēng)之為對(duì)象已死。那虛擬機(jī)棧上的obj變量呢?