Việc tạo các biểu tượng ES6 chưa được khai thác, năng động, có thể dẫn đến việc sử dụng bộ nhớ không thể khôi phục?Có phải rác thu thập ký hiệu toàn cầu ES6 được thu thập không?
Trong Erlang (và trước đây là Ruby), việc tạo các nguyên tử/ký hiệu không phải là rác được thu thập.
Dường như biểu tượng được tạo trong đăng ký biểu tượng toàn cầu (Symbol.for('string')
) không thể thu thập rác và vẫn duy trì trên toàn cầu nhưng tôi có thể thiếu thứ gì đó. Điều này dường như không được tôi đưa ra bởi thông số ES6.
Câu hỏi trong tiêu đề của bạn hoàn toàn là chủ đề. Tuy nhiên, câu hỏi trong văn bản * của bạn là không có chủ đề (dựa trên ý kiến). –
Ký hiệu là bản gốc. [The spec] (http://www.ecma-international.org/ecma-262/7.0/index.html#sec-symbol.for) không nói bất cứ nơi nào mà các bản ghi trong danh sách * GlobalSymbolRegistry * (giữ phím và biểu tượng tương ứng) được giữ yếu. Vì vậy, tôi đoán (do đó không phải là một câu trả lời) rằng các hồ sơ không GC'd. Nhưng bạn phải tạo ra rất nhiều thứ cho họ. –
Như @ T.J.Crowder đã viết các biểu tượng trong JS là nguyên thủy. Nguyên thủy không bị thu gom rác ngay từ đầu. Tất cả các động cơ có thể làm là để loại bỏ một mục từ một danh sách. Dù bằng cách nào thì điều này cũng không có ý nghĩa gì cả. Nếu bạn đặt một cái gì đó vào một cơ quan đăng ký, thì động cơ không thể dự đoán liệu bạn có cố gắng lấy nó trong tương lai hay không. – zeroflagL