複選題
2.哪些語言主要依賴「垃圾回收(Garbage Collection)」?
(A) Java
(B) Go
(C) C
(D) C++
(E) JavaScript
統計: A(16), B(11), C(7), D(12), E(8) #3678258
詳解 (共 1 筆)
【解題思路】
先抓關鍵字:「主要依賴垃圾回收(GC)」
也就是 程式語言本身自動管理記憶體,而不是由程式設計師手動釋放記憶體。
在主流語言中:
-
Java → 有 GC
-
Go → 有 GC
-
JavaScript → 有 GC
-
C / C++ → 沒有 GC,須手動管理記憶體(malloc/free 或 new/delete)
因此答案是:
(A) Java、(B) Go、(E) JavaScript
【逐步講解觀念】
什麼是垃圾回收(Garbage Collection)?
GC 會自動偵測不再使用的物件並回收記憶體,減少記憶體洩漏的風險。
也就是:
「程式寫完後,記憶體不用自己 free,系統會幫你回收。」
因此依賴 GC 的語言通常「比較容易上手」。
自動 vs 手動記憶體管理
| 語言 | 記憶體管理方式 | 是否使用 GC |
|---|---|---|
| Java | 自動 | 有 GC |
| Go | 自動 | 有 GC |
| JavaScript | 自動 | 有 GC |
| C | 手動(malloc/free) | 無 GC |
| C++ | 手動(new/delete) | 無 GC(可用智慧指標改善) |
【選項逐一破題】
(A) Java
完全依賴垃圾回收(HotSpot JVM GC 等)。
正確!
(B) Go(Golang)
內建 GC,設計之初就強調自動記憶體管理。
正確!
(C) C
沒有 GC,全靠程式設計師使用 malloc / free。
錯誤!
(D) C++
沒有內建 GC,使用 new/delete 或智慧指標,但不算 GC。
錯誤!
(E) JavaScript
在瀏覽器與 Node.js 中皆依賴 GC。
正確!
【延伸知識】
各語言典型 GC 機制:
-
Java → 分代式垃圾回收(Generational GC)
-
Go → 並行垃圾回收(Concurrent GC)
-
JavaScript → 標記與清除(Mark-and-Sweep)
GC 的好處:
-
避免記憶體洩漏(memory leak)
-
不需要手動 free
-
程式更安全、穩定
GC 的缺點:
-
可能在執行時造成停頓(GC pause)
-
效能較難精準掌握(尤其在大型系統)
【記憶技巧】
一句話背起來:
「J 家(Java、JavaScript)+ Go → 全都有 GC
C、C++ → 全靠你自己 free。」
或更短版口訣:
「自動回收:Java、Go、JS;
手動管理:C、C++。」
【常見錯誤】
-
以為 C++ 有垃圾回收
C++ 沒有 GC,只有智慧指標(smart pointers)減少手動管理,但本質不是 GC。 -
把 JavaScript 忘記了
在瀏覽器與 Node.js 中,JS 一直都是 GC 語言。 -
Go 容易被忽略
Go 最大賣點之一就是內建 GC,減少記憶體管理負擔。