Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Cơ chế Garbage Collector trong C#

Garbage Collector (GC) quản lý cấp phát và giải phóng bộ nhớ tự động.

Đặc điểm chính

  • Không cần quản lý bộ nhớ thủ công
  • Cấp phát khi new object hoặc boxing value type - rất nhanh
  • Khi bộ nhớ thiếu, GC thu gom object không còn dùng đến
  • Quá trình này gọi là garbage collection

Lợi ích

  • Không cần free memory thủ công
  • Cấp phát hiệu quả trên managed heap
  • Tự động thu hồi memory object không dùng, sẵn sàng cho allocation mới
  • Object managed tự được khởi tạo sạch (zeroed), constructor không cần init mọi field

Generations (Thế hệ)

GC chia heap thành 3 generation:

  • Gen 0: Object mới, ngắn hạn, collect thường xuyên
  • Gen 1: Object sống sót Gen 0, buffer
  • Gen 2: Object lâu đời (singleton, static data), collect hiếm

Large Object Heap (LOH): Object > 85KB, không compact, chỉ Gen 2 collect.

Ép buộc GC (ít khi cần)

GC.Collect(); // Ép collect all generations
GC.Collect(2); // Chỉ Gen 2
GC.WaitForPendingFinalizers();