後端語言 中階

記憶體管理與垃圾回收(GC)的核心概念是什麼?

AI 練習作答

記憶體管理與垃圾回收

記憶體區域

  • Stack(堆疊):函數呼叫堆疊、區域變數,自動分配/釋放,速度快
  • Heap(堆積):動態分配(物件、陣列),需 GC 管理

垃圾回收演算法

Mark and Sweep(標記清除)

  1. 從根物件(root)出發,標記所有可達物件
  2. 清除未被標記的物件 ❌ 可能造成記憶體碎片化

Reference Counting(引用計數)

維護物件被引用次數,歸零即回收 ✅ 即時回收 ❌ 循環引用無法回收(Python 有額外 cycle detector)

Generational GC(分代回收)

根據物件存活時間分代(Young / Old / Permanent)

  • 大多數物件短命,優先掃描 Young Generation
  • JVM(Java)、V8(Node.js)均使用此機制

Stop-the-World(STW)

GC 執行時暫停所有應用執行緒,是延遲的主要來源

  • 現代 GC(如 ZGC、G1 GC)努力最小化 STW 暫停時間

語言比較

語言 GC 機制
Java Generational GC(G1/ZGC)
Go Concurrent Mark-Sweep
Python Reference Counting + Cycle Detector
Rust 無 GC,Ownership 系統編譯時管理

面試加分:理解 Memory Leak 的常見成因——未釋放的事件監聽器、全域快取無上限成長、循環引用。

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分