淺談java的垃圾回收機(jī)制的特點(diǎn):
1.垃圾回收機(jī)制的目標(biāo)是回收無(wú)用對(duì)象的內(nèi)存空間(記住:不是對(duì)象),這些內(nèi)存空間是JVM堆內(nèi)存的內(nèi)存空間。垃圾回收只回收內(nèi)存資源,對(duì)于那些物理資源,如數(shù)據(jù)庫(kù)連接,Socket,I/O流等資源無(wú)能無(wú)能為力,我們要自己關(guān)閉回收。
2.為了加快垃圾回收機(jī)制回收那些無(wú)用對(duì)象所占的內(nèi)存空間,我們可以講對(duì)象的引用變量置于null(記住:置于null后,垃圾回收機(jī)制不會(huì)立即執(zhí)行的)。
3.垃圾回收機(jī)制的潛在缺點(diǎn)它的開(kāi)銷會(huì)影響性能。Java虛擬機(jī)必須跟蹤程序中有用的對(duì)象才可以確定哪些對(duì)象時(shí)無(wú)用的,并釋放那些無(wú)用對(duì)象所占的內(nèi)存空間。這個(gè)過(guò)程要處花費(fèi)處理器時(shí)間的。
4.垃圾回收的不可預(yù)知性。我們可以通過(guò)Runtime對(duì)象的gc()方法或者System.gc()的方法來(lái)建議系統(tǒng)進(jìn)行垃圾回收,但我們不能精確控制垃圾回收機(jī)制的運(yùn)行。
總結(jié):編寫程序時(shí),一個(gè)基本原則就是:對(duì)于不再需要的對(duì)象,不要引用它們。如果保持對(duì)它們的引用,垃圾回收機(jī)制暫時(shí)不會(huì)回收它們所占的內(nèi)存,則系統(tǒng)可用內(nèi)存越來(lái)越少;當(dāng)系統(tǒng)可用內(nèi)存越來(lái)越少,垃圾回收機(jī)制的執(zhí)行頻率越來(lái)越高,從而導(dǎo)致系統(tǒng)的性能下降。