3

Webサービスからの大きなXML応答を処理しています。URLを使用してそれを取得しようとすると、しばらくすると、Firebugに「スクリプトスタックスペースのクォータが使い果たされました」というエラーが表示されます。どうすれば解決できますか?

4

4 に答える 4

5

xmlの処理中に再帰が発生しているようです。これにより、本質的にスタックオーバーフローが発生します(任意の名前で)。

考え:

  • より少ないデータで作業する
  • データを手動で処理している場合は、再帰を少なくしてみてください。おそらく手動の末尾呼び出しまたはキュー/スタックベース
  • jsonを検討してください-その後、スクリプトホストにオフロードして、余分な処理を行わずにオブジェクトを再水和できます
于 2009-06-16T08:38:44.853 に答える
1

Firebugを無効にしてみましたか?

于 2009-06-16T08:39:05.960 に答える
1

Firefox 3の時点で、使用可能なスタックスペースは4MBから〜= 640KBに減少しました(ここで口コミを伝えています)。

たまたまFF3を実行していますか?

https://bugzilla.mozilla.org/show_bug.cgi?id=420874

于 2010-02-16T10:06:51.207 に答える
1

私も同じような問題を抱えていました。おそらく同じです。これは、jQuery $(html)を使用してhtmlの巨大なチャンクを解析しようとした場合に発生する可能性があります。

私のテストでは、これはWindows上のFirefox3.6.16でのみ発生しました。Ubuntu上のFirefox4.0.1の動作ははるかに優れています。おそらくOSとは何の関係もありませんが、4.xのスクリプトエンジンだけがはるかに優れています。

解決策:代わりに

var $divRoot = $(html);

やった

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();  // (*)

(*)jqueryがセレクターを適用する前に、一時ノードを本体に追加する必要がある場合があることを覚えています。ただし、この場合は、それがなくても問題なく動作するように見えました。

FF 4.xにはまったく違いはありませんでしたが、FF3.xでのスタックスペースオーバーフローエラーを回避することができました。

于 2011-06-15T16:18:13.210 に答える