30/09/2026 · VietTechies · Biên tập

Tại Hội nghị thượng đỉnh Ngôn ngữ Python 2026, nhà phát triển nòng cốt Mark Shannon đã trình bày đề xuất về một hệ thống thu gom rác kết hợp, hợp nhất chiến lược phân theo thế hệ (generational) và thu gom cuốn chiếu (incremental). Bài tham luận diễn ra sau khi phiên bản Python 3.14 phải hoàn tác bộ thu gom rác cuốn chiếu thử nghiệm để quay lại bộ thu gom phân thế hệ của Python 3.13 do các môi trường thực tế báo cáo tình trạng áp lực bộ nhớ nghiêm trọng.
Cân bằng giữa thời gian tạm dừng và dung lượng bộ nhớ
Python phụ thuộc chủ yếu vào cơ chế đếm tham chiếu (reference counting) để quản lý bộ nhớ, đồng thời sử dụng bộ thu gom rác phát hiện chu kỳ như một phương án dự phòng chiếm khoảng 11,67% thời gian thực thi. Mặc dù bộ thu gom rác theo thế hệ từ Python 3.13 duy trì mức sử dụng bộ nhớ tổng thể thấp hơn, nó có thể gặp phải thời gian tạm dừng đỉnh điểm lên tới khoảng ba giây. Bộ thu gom cuốn chiếu được giới thiệu trên Python 3.14 đã giảm thành công thời gian tạm dừng tối đa xuống còn vài chục miligiây, nhưng thiết kế không phân thế hệ của nó lại làm tăng mức tiêu thụ bộ nhớ trên các vùng nhớ heap lớn.
Shannon báo cáo rằng cả hai phương pháp thu gom hiện tại đều có hiệu quả dọn dẹp thấp—được tính bằng tỷ lệ giữa số lượng đối tượng thu gom được so với số đối tượng đã duyệt—trong đó bộ thu gom thế hệ đạt 0,3% và bộ thu gom cuốn chiếu đạt khoảng 1%.
Đề xuất chiến lược thu gom rác kết hợp
Để giải quyết sự đánh đổi giữa thời gian tạm dừng và chi phí bộ nhớ, Shannon đã khái quát một kiến trúc thống nhất gồm hai thế hệ: thế hệ trẻ (young generation) có kích thước 20MB và thế hệ cũ (old generation). Đề xuất này luân phiên các lượt dọn dẹp cuốn chiếu giữa hai tầng và dọn dẹp thế hệ cũ với tốc độ gấp đôi tỷ lệ đối tượng còn sống sót ở thế hệ trẻ.
Nghi ngại của nhà phát triển về việc tinh chỉnh và bảo trì
Thảo luận tại hội nghị thượng đỉnh cho thấy những góc nhìn khác nhau về cấu hình và khả năng bảo trì của bộ thu gom rác. Các nhà phát triển nòng cốt Donghee Na và Pablo Galindo Salgado đã đặt câu hỏi về các API cấu hình công khai cùng việc tinh chỉnh lúc runtime nhằm tránh các rào cản khi nâng cấp và xử lý các trường hợp ngoại lệ. Ngược lại, Shannon và Gregory P. Smith tỏ ra thận trọng đối với các tùy chọn cấu hình kiểu Java hoặc việc hỗ trợ nhiều bản triển khai bộ thu gom rác khác nhau, lưu ý rằng các API tinh chỉnh công khai có thể hạn chế những tối ưu hóa nội bộ trong tương lai và làm tăng chi phí bảo trì.
Trả lời các thắc mắc liên quan đến khả năng xây dựng bộ thu gom rác đồng thời hoặc không dùng khóa (lock-free), Shannon lưu ý rằng các tiện ích mở rộng C tạo ra những thách thức mang tính cấu trúc cho thiết kế không khóa vì chúng có thể truy cập bộ nhớ trực tiếp mà không qua sự theo dõi của môi trường thực thi.
Ảnh minh họa do AI tạo, không phải ảnh tư liệu.
Nguồn: Garbage Collection: Generational? Incremental? Both! (Python Language Summit 2026)
