對於GC來講,當程序員建立對象時,GC就開始監控這個對象的地址、大小以及使用狀況。一般,GC採用有向圖的方式記錄和管理堆(heap)中的全部對象。經過這種方式肯定哪些對象是"可達的",哪些對象是"不可達的"。當GC肯定一些對象爲"不可達"時,GC就有責任回收這些內存空間。能夠。程序員能夠手動執行System.gc(),通知GC運行,可是Java語言規範並不保證GC必定會執行。強制執行垃圾回收:System.gc()。Runtime.getRuntime().gc() 程序員
靜態類:static的是屬於類的,而不是屬於對象的,至關因而全局的,不可能被回收 spa
靜態變量自己不會被回收,可是它所引用的對象應該是能夠回收的。 線程
gc只回收heap裏的對象,對象都是同樣的,只要沒有對它的引用,就能夠被回收(可是不必定被回收). 對象的回收和是否static沒有什麼關係! 對象
如:static Vector pane = new Vector(); pane = null; 若是沒有其它引用的話,原來pane指向的對象實例就會被回收。 內存
Java程序員在編寫程序的時候再也不須要考慮內存管 理。因爲有個垃圾回收機制,Java中的對象再也不有"做用域"的概念,只有對象的引用纔有"做用域"。垃圾回收能夠有效的防止內存泄露,有效的使用可使用的內存。垃圾回收器一般是做爲一個單獨的低級別的線程運行,不可預知的狀況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或全部對象進行垃圾回收。 作用域