Ruby quản lý bộ nhớ tự động thông qua một garbage collector (GC) thu hồi các object không còn được tham chiếu. Ruby hiện đại (MRI) dùng một collector mark-and-sweep theo thế hệ (generational), incremental với compaction. Hiểu nó giúp ích cho hiệu năng và chẩn đoán các vấn đề bộ nhớ trong các ứng dụng chạy lâu.
Garbage collection tự động
Ruby cấp phát object trên heap; GC thu hồi những object không còn TIẾP CẬN ĐƯỢC
(được tham chiếu). Bạn không bao giờ giải phóng bộ nhớ thủ công.
Đặc điểm GC của MRI hiện đại:
✓ Mark-and-sweep — đánh dấu object tiếp cận được (từ root), quét bỏ object không tiếp cận được
✓ Theo thế hệ (từ Ruby 2.1) — object mới được thu thường xuyên, object cũ hiếm khi
(dựa trên "hầu hết object chết sớm")
✓ Incremental — trải đều công việc GC để giảm thời gian dừng (pause)
✓ Compacting (GC.compact, Ruby 2.7+) — giảm phân mảnh bộ nhớ
