Firefox 脚本堆栈空间耗尽
-
05-07-2019 - |
题
我正在处理来自 Web 服务的大型 XML 响应。当我尝试使用URL获取该网址时,一段时间后,它显示了Firebug中的错误,即“脚本堆栈空间量已经用尽”,我该如何解决?
解决方案
它 声音 就像处理 xml 时发生一些递归一样,这本质上会导致堆栈溢出(以任何名称)。
想法:
- 使用更少的数据
- 如果您手动处理数据,请尝试使用更少的递归?也许是手动尾部调用或基于队列/堆栈
- 考虑 json - 然后您可以卸载到脚本主机以重新水合对象,而无需任何额外的处理
其他提示
您是否尝试过禁用Firebug?
从Firefox 3开始,可用的堆栈空间从4MB减少到〜= 640KB(我在这里传递口碑)。
你碰巧在运行FF3吗?
我有类似的问题,也许是一样的。 如果你试图用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可以应用任何选择器之前,在某些情况下你需要将temp节点添加到body中。但是,在这种情况下,如果没有它,似乎工作得很好。
FF 4.x完全没有区别,但确实可以避免FF 3.x上的堆栈空间溢出错误。
不隶属于 StackOverflow