在什么時(shí)候一個(gè)java class/interface會(huì)被卸載呢?Sun公司的原話是這么說的:"class or interface may be unloaded if and only if its class loader is unreachable. Classes loaded by the bootstrap loader may not be unloaded."
其實(shí)一個(gè)已經(jīng)加載的類是無(wú)法被更新的,如果你試圖用同一個(gè)ClassLoader再次加載同一個(gè)類,就會(huì)得到異常(java.lang.LinkageError: duplicate class definition),我們只能夠重新創(chuàng)建一個(gè)新的ClassLoader實(shí)例來再次加載新類。至于原來已經(jīng)加載的類,開發(fā)人員不必去管它,因?yàn)樗赡苓有實(shí)例正在被使用,只要相關(guān)的實(shí)例都被內(nèi)存回收了,那么JVM就會(huì)在適當(dāng)?shù)臅r(shí)候把不會(huì)再使用的類卸載。