Werden globale ES6-Symbole gesammelt?

8

Ist die unbeschriftete, dynamische Erstellung von ES6-Symbolen etwas, das zu einer nicht wiederherstellbaren Speichernutzung führen kann?

In Erlang (und auch vorher Ruby) ist die Erzeugung von Atomen / Symbolen kein Müll.

Es sieht so aus, als ob Symbole, die in der globalen Symbolregistrierung ( Symbol.for('string') ) erstellt wurden, nicht mit Garbage Collection gesammelt werden könnten und global eindeutig bleiben, aber mir könnte etwas fehlen. Dies schien mir nicht von der ES6-Spezifikation diktiert zu werden.

    
Eoin 12.10.2016, 11:05
quelle

1 Antwort

2

Symbole, die Primitive sind, bedeuten nicht, dass sie nicht mithilfe von Referenzen und Zuweisungen implementiert werden können. Denken Sie über primitive Strings in js nach. Browser können Symbole auf diese Weise implementieren, wodurch sie gc unterliegen. Ein schneller Test for(;;) Symbol(); (nicht ausführen) in Chrome verursacht ein Sägezahnspeicherprofil, also nehme ich an, dass Symbole zugewiesen und Müll gesammelt werden.

    
Tamas Hegedus 13.10.2016 09:01
quelle

Tags und Links