Điều này liên quan đến một ứng dụng PHP 5.3 Cli xử lý rất nhiều dữ liệu một cách phức tạp, mất nhiều giờ để chạy. Ai đó phát hiện ra rằng việc tắt bộ sưu tập rác thải khiến nó chạy nhanh hơn rất nhiều (có thể tới 50%).Tại sao bộ thu gom rác của PHP làm chậm hiệu suất và cách quản lý bộ nhớ mà không có nó?
Bài viết duy nhất tôi đã đề cập đến đề cập đến lần truy cập hiệu suất này là http://derickrethans.nl/collecting-garbage-performance-considerations.html. Tôi không chắc chắn tôi làm theo nó hoàn toàn, nhưng nó có vẻ gợi ý rằng nó chỉ áp dụng cho mã với rất nhiều tài liệu tham khảo vòng tròn.
Ai đó có thể làm sáng tỏ điều này?
Ngoài ra, với điều kiện chúng tôi đã tắt gc, có cách nào để giảm bộ nhớ theo cách thủ công không? Sử dụng unset() đã được đề xuất. Một bài kiểm tra nhanh đã chỉ ra rằng tám mươi byte được giải phóng bởi unset() bất kể kích thước của đối tượng. Điều này cho thấy nó chỉ là mất tham chiếu, được sinh ra bởi những gì tôi đã đọc trực tuyến. Tôi có nghĩ rằng tám mươi byte này sẽ được giải phóng dù sao đi nữa, ngay cả khi không thu gom rác thải, khi biến đó nằm ngoài phạm vi?
Tôi nghĩ rằng có thể là trường hợp, nhưng hướng dẫn là rất rõ ràng. Vì vậy, là một trong những thường xuyên không thể vô hiệu hóa? (Không phải là tôi muốn, chỉ quan tâm) – naomi
@naomi Vâng, bạn không thể tắt nó. Cũng không có lý do gì (tác động rất nhỏ) và bởi vì bạn không thể giải phóng bộ nhớ từ bên trong PHP ('unset()' không làm điều này), bạn sẽ có một vấn đề lớn: D – KingCrunch