3

我正在处理来自 Web 服务的大型 XML 响应。当我尝试使用 URL 获取它时,一段时间后它在 Firebug 中显示错误“脚本堆栈空间配额已用完”我该如何解决?

4

4 回答 4

5

听起来在处理 xml 时会发生一些递归,这本质上会导致堆栈溢出(以任何名称)。

想法:

  • 使用更少的数据
  • 如果您正在手动处理数据,请尝试使用较少的递归?也许是手动尾调用或基于队列/堆栈
  • 考虑 json - 然后您可以卸载到脚本主机以重新水化对象而无需任何额外处理
于 2009-06-16T08:38:44.853 回答
1

我有一个类似的问题,也许是一样的。如果您尝试使用 jQuery $(html) 解析大量 html,就会发生这种情况。

在我的测试中,这只发生在 Windows 上的 Firefox 3.6.16 上。Ubuntu 上的 Firefox 4.0.1 表现得更好。可能与操作系统无关,只是 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 上绝对没有区别,但它确实可以避免 FF 3.x 上的堆栈空间溢出错误。

于 2011-06-15T16:18:13.210 回答
1

从 Firefox 3 开始,可用堆栈空间已从 4MB 下降到 ~= 640KB(我在此通过口耳相传)。

你碰巧在玩FF3吗?

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

于 2010-02-16T10:06:51.207 回答
1

您是否尝试过禁用 Firebug?

于 2009-06-16T08:39:05.960 回答