【考題題干】關於垃圾收集的哪些敘述是對的?
A.垃圾收集將檢查並釋放不再使用的內存。
B.垃圾收集允許程序開發者明確指定並立即釋放該內存。
C.程序開發者必須自己創建一個線程進行內存釋放的工作。
D.垃圾收集能夠在期望的時間釋放被 Java 對象使用的內存。
【試題分析】Java 語言將內存分配和釋放的工組交給了自己,程序員不必做這些工作,它提供一個
系統級的線程跟蹤每個內存的分配,在 JVM 的空閑處理中,垃圾收集線程將檢查和釋放不再使用的內
存(即可以被釋放的內存)。垃圾收集的過程在 Java 程序的生存期中是自動的,不需要分配和釋放內存,
也避免了內存泄漏。可以調用 System.gc()方法建議 JVM 執行垃圾收集以使得可被釋放的內存能立即被
使用,當此方法返回的時候, JVM 已經做了最大的努力從被丟棄的對象上回收內存空間。程序員不能指
定收集哪些內存,一般而言也不用關心這個問題,除非是程序的內存消耗很大,特別是有很多臨時對象
時可以“建議“進行垃圾收集以提高可用內存。需要指出的是調用 System.gc()方法不能保證 JVM 立即
進行垃圾收集,而只能是建議,因為垃圾收集線程的優先級很低(通常是最低的)。
JVM 垃圾收集器收集一個對象之前,一般要求程序調用適當的方法釋放資源,但在沒有明確釋放資
源的情況下,Java 提供了缺省機制來終止化該對象心釋放資源,這個方法就是 finalize( )。因此選項 A
是正確的。
垃圾收集器不可以被強制執行,但程序員可以通過調用 System. gc 方法來建議執行垃圾收集器。因
此選項 B 是錯誤的。
Java 的垃圾回收機制是為所有 Java 應用進程服務的,而不是為某個特定的進程服務的。因此,任何
一個進程都沒有權利去命令垃圾回收機制做什么、怎么做或做多少。因此選項 C 是錯誤的。
Java 運行時系統只在需要的時候才使用垃圾收集。因此用戶無法知道垃圾回收發生的精確時間。同
樣沒有辦法預知在一組均符合垃圾收集器收集標准的對象中,哪一個會被首先收集。 因此選項 D 是錯誤
的。
【參考答案】A