1. 程式人生 > >垃圾回收器的基本原理是什麽?垃圾回收器可以馬上回收內存嗎?有什麽辦法主動通知虛擬機進行垃圾回

垃圾回收器的基本原理是什麽?垃圾回收器可以馬上回收內存嗎?有什麽辦法主動通知虛擬機進行垃圾回

是什麽 就會 使用 實例 new vector runt 內存堆 time()

  對於GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是"可達的",哪些對象是"不可達的"。當GC確定一些對象為"不可達"時,GC就有責任回收這些內存空間。

  可以。

  程序員可以手動執行System.gc(),通知GC運行,但是Java語言規範並不保證GC一定會執行。強制執行垃圾回收:System.gc()。Runtime.getRuntime().gc()

  靜態類:static的是屬於類的,而不是屬於對象的,相當於是全局的,不可能被回收

  靜態變量本身不會被回收,但是它所引用的對象應該是可以回收的。

  gc只回收heap裏的對象,對象都是一樣的,只要沒有對它的引用,就可以被回收(但是不一定被回收). 對象的回收和是否static沒有什麽關系!

如:static Vector pane = new Vector(); pane = null; 如果沒有其它引用的話,原來pane指向的對象實例就會被回收。

  Java程序員在編寫程序的時候不再需要考慮內存管理。由於有個垃圾回收機制,Java中的對象不再有"作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。

垃圾回收器的基本原理是什麽?垃圾回收器可以馬上回收內存嗎?有什麽辦法主動通知虛擬機進行垃圾回