Script Stapelspeicher erschöpft firefox
-
05-07-2019 - |
Frage
ich mit einer großen XML-Antwort von einem Webdienst arbeite. Wenn ich zu bekommen versuchen, dass eine URL verwenden, nach einiger Zeit zeigt es einen Fehler in Firebug, dass „Skript Stapelspeicher Kontingent erschöpft ist“ Wie kann ich das Problem beheben?
Lösung
Es Sounds wie es einig Rekursion los, wenn die XML-Verarbeitung, das im Wesentlichen einen Stapelüberlauf verursacht (von einem beliebigen Namen).
Gedanken:
- Arbeit mit weniger Daten
- , wenn Sie die Daten manuell bearbeiten, versuchen, weniger Rekursion zu benutzen? vielleicht manuelle Tail-Call oder Warteschlange / Stack basiert
- json betrachten - dann können Sie das Skript Host-Offload, um das Objekt ohne zusätzliche Bearbeitung rehydrieren
Andere Tipps
Haben Sie versucht, das Deaktivieren von Firebug?
Wie Firefox 3 hat der verfügbare Stapelspeicher von 4 MB bis ~ = 640KB fällt (ich vorbei auf Mundpropaganda hier).
Sie zufällig FF3 zu laufen?
Ich hatte ein ähnliches Problem, vielleicht das gleiche. Dies kann passieren, wenn Sie versuchen, ein großes Stück von HTML mit jQuery $ (html) zu analysieren.
In meinen Tests dies geschah nur auf Firefox 3.6.16 unter Windows. Firefox 4.0.1 auf Ubuntu verhielt sich viel besser. Wahrscheinlich nichts mit dem Betriebssystem zu tun, nur das Script-Engine in 4.x ist viel besser ..
Lösung: Statt
var $divRoot = $(html);
Ich habe
var $temp = $('<div style="display:none;">'); // .appendTo($('body')); // (*)
$temp.html(html); // using the client's html parsing
var $divRoot = $('> div', $temp); // or .children() or whatever
// $temp.remove(); // (*)
(*) Ich erinnere mich, dass Sie in einigen Fällen müssen die temporären Knoten an den Körper an, bevor jquery alle Selektoren anwenden kann. In diesem Fall jedoch schien es, ohne dass nur gut zu funktionieren.
Es gab absolut keinen Unterschied auf FF 4.x, aber es erlaubte die Stapelspeicher-Überlauffehler auf FF 3.x zu vermeiden.