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.
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.
Tags und Links javascript ecmascript-6