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