2017-09-08 5 views
3

Ich habe einige Verarbeitung, die nicht unbedingt CPU-intensiv ist, aber viele temporäre Objekte geschaffen, die während der Animation unappetitliche Garbage Collector Schluckauf führt usw.Erhalten Web-Arbeiter ihren eigenen Garbage Collector?

Wird diese temp-Objekt Erstellungsprozess Abladen auf dem Web-Arbeiter lindern helfen Das? Mit anderen Worten - wird der GC-Schluckauf für den Web-Worker-Thread isoliert und beeinflusst nicht meinen Haupt-Thread, oder ist GC etwas, das beide Threads betrifft?

+0

meine Vermutung ist, sie tun, aber das ist reine Vermutung – Ced

Antwort

4

Die ECMAScript-Spezifikation gibt keine Formularspeicherverwaltung an, auf Garbage Collection wird nur in nicht normativen Teilen Bezug genommen.

Ähnlich sagt die Web-Worker-Spezifikation nicht viel über Garbage Collection außer Wrt. wie lange einige Objekte leben müssen.

Das ist also ein implementierungsspezifisches Verhalten. Selbst wenn Implementierungen einen pro-Worker-GC implementieren und im Allgemeinen einen gemeinsamen Overhead vermeiden, können sie dennoch eine globale Sammlung aller Worker aufgrund von Speicherdruck auslösen, insbesondere bei Systemen mit eingeschränktem Speicher.

Das heißt, es ist wahrscheinlicher, dass Sie eine GC-Isolation mit Arbeitern als ohne erreichen werden. Sie müssen jedoch darauf achten, dass der Messaging-Overhead zwischen Arbeitern und dem Hauptthread vermieden wird, da das Serialisieren von Nachrichten (für den strukturierten Klonalgorithmus) zusätzlichen Papierkorb erzeugen kann. Durch die Verwendung von Transfer- oder Shared-Memory-Puffern kann dies vermieden werden.

+0

Danke, akzeptierte die Antwort :) Wäre toll, wenn es einige Dokumentation darüber, wie die großen Browser dies implementieren würde. Hast du diese Information? – davidkomer

+2

Ihre Implementierungen ändern sich und GC-Eigenschaften sind nicht Teil ihrer Garantien, so dass sie für externe Benutzer nicht dokumentiert werden. Aber Sie können immer noch Informationen in ihren Bugtrackern oder Tech-Blogs finden. Für firefox ist es der Fall, dass die GCs für eine Weile aufgeteilt wurden, so dass es eine gewisse Isolation gibt, aber die Fallback-Ereignisse auf dem Speicherdruck, die ich erwähnte, und einige geteilte Dinge existieren auch. tl; dr: ja, irgendwie. aber keine offiziellen oder spezifizierten Garantien, es hängt, abhängig von der Änderung, von der Implementierung ab – the8472

Verwandte Themen