Java的垃圾回收機制
傳統的C/C++語言,需要程序員負責回收已經分配內存。顯式回收垃圾回收的缺點:
1)程序忘記及時回收,從而導致內存泄露,降低系統性能。2)程序錯誤回收程序核心類庫的內存,導致系統崩潰。Java語言不需要程序員直接控制內存回收,是由JRE在后台自動回收不再使用的內存,稱為垃圾回收機制,簡稱GC;1)可以提高編程效率。2)保護程序的完整性。3)其開銷影響性能。Java虛擬機必須跟蹤程序中有用的對象,確定哪些是無用的。垃圾回收機制的特點1)垃圾回收機制回收JVM堆內存里的對象空間,不負責回收棧內存數據。2)對其他物理連接,比如數據庫連接、輸入流輸出流、Socket連接無能為力。3)垃圾回收發生具有不可預知性,程序無法精確控制垃圾回收機制執行。4)可以將對象的引用變量設置為null,暗示垃圾回收機制可以回收該對象。現在的JVM有多種垃圾回收實現算法,表現各異。垃圾回收機制回收任何對象之前,總會先調用它的finalize方法(如果覆蓋該方法,讓一個新的引用變量重新引用該對象,則會重新激活對象)。程序員可以通過System.gc()或者Runtime.getRuntime().gc()來通知系統進行垃圾回收,會有一些效果,但是系統是否進行垃圾回收依然不確定。永遠不要主動調用某個對象的finalize方法,應該交給垃圾回收機制調用。