1.Java中無用的對象由垃圾回收器自動完成。
2.Java的垃圾回收器機制是通過一個后臺系統(tǒng)級線程對內(nèi)存分配情況進行跟蹤,對程序員是透明的,而且他是在程序運行期間發(fā)生的。在JVM的空閑處理中,垃圾收集線程將檢查和釋放不再使用的內(nèi)存。垃圾收集過程在java程序的生存周期中是自動的,不需要分配和釋放內(nèi)存,也避免了內(nèi)存泄漏。(注:在eclipse中經(jīng)常出現(xiàn)假死機狀態(tài),是不是就是垃圾回收器搞得鬼,我覺得垃圾回收器在使用上不是透明的,應(yīng)該讓程序自己管理。)
3.程序員無法強制調(diào)用垃圾回收器明確指定對象,但可以通過將欲廢棄的對象賦予null來通知垃圾回收器回收廢棄對象。至于何時回收,將由JVM決定。程序不能干預(yù)。
4.垃圾回收器不能完全避免內(nèi)存泄漏。因為程序中存在垃圾回收器無法回收的的持續(xù)存在的無用對象。當不再使用一個對象時,最好明確該對象為null,這種動作不能控制回收器立即回收,只是通知可以回收。當然,如果系統(tǒng)內(nèi)存中可用內(nèi)存低,系統(tǒng)也會自動運行垃圾回收器來釋放廢棄對象占用的內(nèi)存資源。
5.程序可以使用System.gc()和Runtime.getRuntime().gc()來通知垃圾回收器,這兩種方法的調(diào)用不會強制垃圾回收器立即執(zhí)行,而是一種建議,通知性而非強制性要求。希望垃圾回收器來回收已經(jīng)廢棄的對象,以便釋放占據(jù)的資源供其他對象使用。
6.在對象能夠被垃圾回收器回收錢,其必須符合回收條件。當一個對象沒有任何活的線程能夠到達時,該對象就符合垃圾回收器回收的條件了。
7.不同的Java虛擬機實現(xiàn)具有不同的垃圾回收機制,也就是不同的垃圾回收算法。
8.定義在Object上的finalize()方法,用于當垃圾回收器確定不存在對對象的更多引用時,由對象的垃圾回收器調(diào)用此方法。JVM不保證調(diào)用某個給定對象的finalize()方法,因此finalize()方法可能從不運行。對于任何給定的對象,Java虛擬機最多只調(diào)用一次finalize()方法。
9.子類可以重載finalize(),以配置系統(tǒng)資源或執(zhí)行其他清除。但由于JVM不能保證finalize()方法一定獲得調(diào)用,因此重載finalize()方法內(nèi)的代碼不能保證一定被執(zhí)行。
posted on 2008-06-14 17:37
一葉笑天 閱讀(168)
評論(0) 編輯 收藏 所屬分類:
JAVA技術(shù)