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
newobject 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();