Mặc dù không phải là thuật toán thu thập rác, phân tích thoát cho phép lý luận về thời gian sống của các đối tượng. Vì vậy, nếu hiệu quả là một mối quan tâm và các đối tượng nên được thu thập không phải trong tất cả, nhưng trong trường hợp "rõ ràng", nó có thể được thuận tiện. Ý tưởng cơ bản là thực hiện phân tích tĩnh của chương trình (tại thời gian biên dịch hoặc tại thời gian tải nếu được biên dịch cho máy ảo) và tìm hiểu xem một đối tượng mới được tạo có thể thoát khỏi một thường trình được tạo ra hay không (do đó tên của phân tích) . Nếu đối tượng không được truyền ở bất kỳ nơi nào khác, không được lưu trữ trong bộ nhớ toàn cục, không được trả về từ thường lệ, vv., Nó có thể được phát hành trước khi trở về từ thói quen này hoặc thậm chí sớm hơn, tại nơi sử dụng cuối cùng của nó.
Các đối tượng không sống lâu hơn cuộc gọi phương thức liên quan có thể được cấp phát trên ngăn xếp thay vì trong heap để chúng có thể được loại bỏ khỏi chu kỳ thu gom rác tại thời gian biên dịch, do đó giảm áp lực lên GC chung.
Nguồn
2014-02-13 06:28:19
Có một bài đăng hôm nay trên Tin tức Hacker về GC thời gian thực. (Tôi không đọc nó) – leppie
Bạn có thể chạy GC đánh dấu và quét sau mỗi thay đổi tham chiếu. Mặc dù điều đó sẽ vô cùng hiệu quả. – svick
@svick: Bạn nói đúng. Bây giờ tôi cảm thấy ngu ngốc :) – Askaga