2010-11-08 5 views
5

Ich habe eine Anwendung, die in Firefox funktioniert, aber wenn ich in IE8 in getestet, bekam ich einen seltsamen Fehler: 'Stack overflow at line: 0'Wie erkennt man, ob ein Objekt in GWT und IE8 zu groß für RPC ist?

Nach einem Vorschlag von der GWT-Diskussionsgruppe, die es zu großen/komplexen Objekten zusammenhängen könnte zurückgegeben Von RPC-Aufrufen konnte ich das Problem zu einem meiner RPC-Serveraufrufe eingrenzen, der ein großes, komplexes Objekt zurückgibt.

Wenn der Fehler tatsächlich darauf zurückzuführen ist, dass ein großes Objekt zu groß oder komplex ist, woher weiß ich das? Wo ist die Schwelle von "zu groß"?

Weitere Kommentare aus der GWT-Diskussion weisen darauf hin, dass Collections-Objekte wahrscheinlich das Problem sind, aber dies stammt aus Erfahrungen anderer GWT-Entwickler. Wird dies irgendwo von den GWT-Dokumenten oder dem Team dokumentiert?

Aber trotzdem bleibt die Frage - woher weiß ich, wenn es "klein genug" ist?

Antwort

0

Ich weiß immer noch nicht, ob es eine Antwort auf die angegebene Frage über die Größe eines Objekts gibt, aber mein Problem endete damit, dass ich rekursive Verweise auf andere Objekte in dem Objekt hatte, das ich zurückgab. Nun, nicht explizit rekursiv, sondern Referenzen in Objekt A auf Objekt B, die auf Objekt A verwiesen, etc. etc. Es war eine Stammbaumstruktur, also gab es Beziehungskarten für jedes Individuum, die Referenzen zu anderen verwandten Individuen enthielten, die Referenzen hatten zurück zu der verwandten Person usw. Funktioniert gut im Speicher, mit den Verweisen auf das gleiche Objekt, aber anscheinend konnte das Javascript, das GWT für IE erzeugte, es nicht richtig deserialisieren.

0

Der beste Weg, dies zu beheben wäre, die -compileReport Flagge zu verwenden, wenn Ihr GWT-Code kompilieren, ist es ein Leitfaden für Entwickler und einige Beispiele finden Sie hier:

Ich habe benutzte es in einem Ameisenskript mit GWT 1.6.x und 2.x.

PS: Nicht wissend, welche Version von GWT du arbeitest, kann ich wirklich nichts nützlicheres zur Verfügung stellen. Es könnte jedoch etwas zu beachten sein, wenn Sie etwas älter als 2.1 verwenden - weil sie Data Presentation Widgets eingeführt haben, was möglicherweise Ihre Probleme mit Objekten lösen könnte, die "zu groß" sind.

+0

Wir verwenden GWT 2.0. Danke für den Tipp zum compileReport. Ich habe diese Seite nur überflogen, aber es sieht so aus, als hätte es viele hilfreiche Dinge, die gut für die Zukunft sind. – user26270

0

Ich bekam auch 'Stapelüberlauf bei Zeile: 0' beim Laden meiner GWT-Seite. Schluss damit, dass in meinem Fall die App sich nur beschwerte, wenn sie die Eclipse-Debug-Modus-URL einschließlich des "gwt.codesvr = 127.0.0.1: 9997-Snippets" verwendete. Nach dem Entfernen dieses Snippets in der URL ist der Fehler verschwunden.

Verwandte Themen