Stack vs. Heap in Javascript? (Maximum call stack size exceeded)

Ich versuche zum Aufbau einer web-Seite, für die ich brauche die Schaufel um mehrere 100 MB Daten in JavaScript. Mit verschiedenen Browsern, die ich ausführen in "maximum call stack size exceeded" Fehler bei verschiedenen Datenmengen.

Kann ich dieses Problem beheben, indem Sie durch meinen code und versuchen, lokale Variablen innerhalb von Funktionen in einem globalen Rahmen zu versuchen, um Ihnen zugeteilt zu werden auf dem heap statt auf dem stack? Oder sind diese Konzepte nicht existieren in JavaScript? (Soweit ich weiß, habe ich keine großen rekursive Schleifen in meine Daten, also es ist wirklich ein paar riesige strings /Anzahl arrays, die anscheinend den Fehler verursacht)

Falls dies nicht möglich ist, gibt es Möglichkeiten zu Fragen, den browser zu reservieren mehr Speicher?

  • +1 für den interessanten Beitrag
  • Sie haben nicht verstanden, was Sie sehen. Was passiert ist, haben Sie eine rekursive Funktion, also eine Funktion, die nennt sich (oder ruft eine andere Funktion, die Anrufe der erste) wahrscheinlich durch Unfall.
  • (Verwandte) stackoverflow.com/questions/6602864/...
  • Wie genau Sie transportieren (Schaufeln 🙂 sagte, sind 100 MB Daten? Was server-side-Technologie verwenden Sie?
  • Es könnte auch eine Funktion sein, die versucht, rekursiv Durchlaufen eines dieser sehr große Strukturen, die die OP erwähnt.
  • Leider gibt es wirklich keine Rekursion in meinem code an der Stelle, wo es Probleme hat. Es muss eine variable allocation-problem.
  • Ich bin mit einfachen XHR-Anfragen zum download der Daten aus Google AppEngine ist Blobstore. Manches ist auch direkt generierten client-Seite.
  • Ohne deine code wird es immer ein Rätsel bleiben! Es gibt keine Möglichkeit, Sie zu beantworten. Alles Spekulation. Ohne den problematischen code, den Sie nicht habe eine Frage.
  • absolut einig. Ich arbeite zu versuchen, die pin nach dem problem, so kann ich nach einigen code, der veranschaulicht, es.. Es nimmt mich eine Weile, da ich wirklich Codierung meiner Seite in GWT, also Java, das ist dann cross-kompiliert Massiv verschleierten JavaScript, ich kann also nicht einfach kopieren und fügen Sie den problem-Bereich...
  • So wie können Sie also sehr sehr sicher, dass Sie don ' T haben keine Rekursion?
  • Ich könnte mir vorstellen, dass es extrem schwer zu schreiben, ein cross-compiler, die eine Optimierung der nicht-rekursiven code durch Umwandlung in eine rekursive Implementierung...
  • Gut, nun bin ich 150% sicher, es war nicht ein rekursions-Problem (siehe unten). Aber es ist ein bisschen von einem seltsamen Mechanismus, die zu diesem problem führen, also in 99,99% aller Fälle haben Sie wahrscheinlich Recht und es wäre eine Rekursion Problem, nur dieses mal nicht.

InformationsquelleAutor Markus A. | 2012-06-25
Schreibe einen Kommentar