複選題

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 筆)

#7222971

【解題思路】

先抓關鍵字:「主要依賴垃圾回收(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++。」

【常見錯誤】

  1. 以為 C++ 有垃圾回收
    C++ 沒有 GC,只有智慧指標(smart pointers)減少手動管理,但本質不是 GC。

  2. 把 JavaScript 忘記了
    在瀏覽器與 Node.js 中,JS 一直都是 GC 語言。

  3. Go 容易被忽略
    Go 最大賣點之一就是內建 GC,減少記憶體管理負擔。

0
0

私人筆記 (共 1 筆)

私人筆記#7747021
未解鎖
有垃圾回收(自動管理) Java、G...
(共 85 字,隱藏中)
前往觀看
1
0