Các kỹ thuật thu gom rác thải khi biên soạn một ngôn ngữ thu gom rác thải thành C là gì? Tôi biết hai:Thu gom rác khi biên dịch sang C
duy trì một chồng bóng mà tiết kiệm tất cả các rễ một cách rõ ràng trong một cấu trúc dữ liệu
sử dụng một bộ thu rác bảo thủ như
Kỹ thuật đầu tiên Boehm là chậm, bởi vì bạn phải duy trì ngăn xếp bóng. Có khả năng mỗi khi một hàm được gọi, bạn cần phải lưu các biến cục bộ trong một cấu trúc dữ liệu.
Kỹ thuật thứ hai cũng chậm và vốn không đòi lại tất cả rác do sử dụng bộ thu gom rác bảo thủ.
Câu hỏi của tôi là: trạng thái của bộ sưu tập rác khi biên dịch thành C. Lưu ý rằng tôi không có nghĩa là cách thuận tiện để thu gom rác khi lập trình trong C (đây là mục tiêu của bộ thu rác Boehm) , chỉ là một cách để thực hiện thu gom rác khi biên dịch thành C.
Đây là một điều khó chịu. Đó cũng là lý do tại sao ví dụ: LLVM và C-- là phổ biến (chúng cho phép thu gom rác mà không phải xử lý nó một cách mau chóng). – delnan
Hệ thống kiểu trong ngôn ngữ gốc có dựa trên DAG hoặc đồ thị chung không? DAG chỉ cần đếm tham chiếu (do hậu quả của việc tuần hoàn). –
Đồ thị chung, thật không may. Tôi cũng nghĩ về đếm tham chiếu, nhưng điều đó dường như không giải quyết được mọi thứ bởi vì bạn vẫn cần một cách để đi qua rễ để thu thập chu kỳ ... – Jules