1.java語言中的對象、數組等引用類型實體,系統都會爲它在堆內存裏面分配內存空間,當這個內存空間沒有被引用時,java就會自動把它當作垃圾回收。垃圾回收機制有如下特色,垃圾回收機制只負責對堆裏面內存中的對象,不會回收任何物理資源(例如數據庫鏈接、網絡IO等資源),垃圾回收沒法精確的控制回收的運行,垃圾回收只是在合適的時候進行的。在垃圾回收機制回收任何對象以前,總會調用它finalize()方法,該方法多是該對象從新復活,從而致使垃圾回收機制取消回收。java
2.當一個對象在堆內存中運行時,根據他被引用所引用的狀態,可把分爲三種,可達狀態、可恢復狀態、不可達狀態。數據庫
3.強制垃圾回收,程序沒法精確的控制Java垃圾回收的時機,但依然能夠強制系統進行垃圾回收,其實只是通知系統進行垃圾回收,但系統回收不回收垃圾依然不肯定。強制系統進行垃圾回收有如下兩種:調用System類的gc()靜態方法System.gc()。還有一種是調用Runtime.getRuntime().gc().數組
4.finalize()方法是Object類裏的實例方法,方法的原型:protected void finalize() throws Throable 當finalize()方法返回後,對象消失,垃圾回收機制開始執行。finalize()方法具備如下四個特色永遠不要主動調用某個對象的finalize()方法;finalize()方法合適調用,是否調用具備不肯定性,不要把finalize()方法當成必定會執行的方法;當JVM執行可恢復對象的finalize()方法是時,多是該對象或者系統中其餘對象從新變成可達狀態;JVM執行finalize()時出現異常時,垃圾回收機制不會報告任何異常,系統繼續執行。網絡
5.對象的軟、弱和虛引用,java.lang.ref包提供了3個類:softReference、PhantomReference、WeakReference, 他們分別表明了系統對象的3中引用:軟引用、虛引用、弱引用;強引用,這是java語言中作常見的引用變量的對象,軟引用,軟引用須要經過SoftReference類來實現,當對象只有一個軟引用時,他有可能被系統的垃圾回收機制回收;弱引用,需經過WeakReference類實現,比軟引用的級別更低,系統的垃圾回收機制只要一運行就會被回收;虛引用經過PhantomReference類實現,虛引用對對象自己並無太大影響,對象甚至感受不到,常常和引用隊列(ReferenceQueue)聯合使用.用於保存被垃圾回收的引用。對象