1. 程式人生 > >Java中垃圾回收(gc)問題

Java中垃圾回收(gc)問題

以下哪項陳述是正確的?
A. 垃圾回收執行緒的優先順序很高,以保證不再 使用的記憶體將被及時回收
B. 垃圾收集允許程式開發者明確指定釋放 哪一個物件
C. 垃圾回收機制保證了JAVA程式不會出現 記憶體溢位
D. 進入”Dead”狀態的執行緒將被垃圾回收器回收
E. 以上都不對
答案:E
解析:
A: 垃圾回收在jvm中優先順序相當相當低。
B:垃圾收集器(GC)程式開發者只能推薦JVM進行回收,但何時回收,回收哪些,程式設計師不能控制。
C:垃圾回收機制只是回收不再使用的JVM記憶體,如果程式有嚴重BUG,照樣記憶體溢位。
D:進入DEAD的執行緒,它還可以恢復,GC不會回收

當程式執行時,至少會有兩個執行緒開啟啟動,一個是我們的主執行緒,一個時垃圾回收執行緒,垃圾回收執行緒的priority(優先順序)較低。垃圾回收器會對我們使用的物件進行監視,當一個物件長時間不使用時,垃圾回收器會在空閒的時候(不定時)對物件進行回收,釋放記憶體空間,程式設計師是不可以顯示的呼叫垃圾回收器回收記憶體的,但是可以使用System.gc()方法建議垃圾回收器進行回收,但是垃圾回收器不一定會執行。
Java的垃圾回收機制可以有效的防止記憶體溢位問題,但是它並不能完全保證不會出現記憶體溢位。例如當程式出現嚴重的問題時,也可能出現記憶體溢位問題。