Czy jest otwarte, dynamiczne tworzenie symboli ES6, które mogą powodować nieodwracalne zużycie pamięci?Czy gromadzone są symbole globalne ES6?
W języku Erlang (a także wcześniej, Ruby) tworzenie atomów/symboli nie jest zbiorem śmieci.
Wygląda na to, że symbole utworzone w globalnym rejestrze symboli (Symbol.for('string')
) nie mogą zostać usunięte z pamięci i pozostać globalnie unikatowe, ale być może czegoś brakuje. Wydaje mi się, że nie jest to podyktowane specyfikacją ES6.
Pytanie w Twoim tytule dotyczy wyłącznie tematu. Pytanie w twoim * tekście * jest jednak nie na temat (oparte na opiniach). –
Symbole same w sobie są prymitywami. [The spec] (http://www.ecma-international.org/ecma-262/7.0/index.html#sec-symbol.for) nie mówi nigdzie, że rekordy na liście * GlobalSymbolRegistry * klawisze i odpowiadające im symbole) są słabo trzymane. Więc zgaduję (stąd nie odpowiedź), że rekordy nie są GC. Ale musielibyście stworzyć *** wiele z nich, żeby to miało znaczenie. –
Jak @ T.J.Crowder już napisał symbole w JS są prymitywami. Prymitywy nie są w pierwszej kolejności przedmiotem zbierania śmieci. Jedynym silnikiem może być usunięcie wpisu z listy. Tak czy inaczej to nie ma sensu. Jeśli umieścisz coś w rejestrze, silnik nie będzie mógł przewidzieć, czy spróbujesz go zdobyć w przyszłości. – zeroflagL