我正在使用来自Web服务的大型XML响应。当我尝试使用URL获取该文件时,经过一段时间后,它在Firebug中显示“脚本堆栈空间配额已耗尽”的错误。 我该如何解决这个问题?脚本堆栈空间耗尽firefox
3
A
回答
4
它听起来像处理XML时发生了一些递归,实质上导致堆栈溢出(任何名称)。
思考:
- 数据较少
- 如果要手动处理数据的工作,尽量少用递归?也许手动尾调用或队列/栈为基础
- 考虑JSON - 那么你可以卸载的脚本宿主来补充水分的对象,而无需任何额外的处理
1
您是否尝试时禁用Firebug?
1
自Firefox 3起,可用堆栈空间从4MB降至〜640KB(我在这里传递口碑)。
你碰巧正在运行FF3吗?
1
我也有类似的问题,也许是相同的。 如果您尝试使用jQuery $(html)解析大量html,就会发生这种情况。
在我的测试中,这只发生在Windows上的Firefox 3.6.16上。 Ubuntu上的Firefox 4.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(); // (*)
(*) 我记得在某些情况下,你需要将temp节点添加到body,在jquery可以应用任何选择器之前。但是,在这种情况下,没有这个,它似乎工作得很好。
FF 4.x完全没有区别,但它确实可以避免FF 3.x上的堆栈空间溢出错误。
相关问题
- 1. 用尽ValueType堆栈空间
- 2. “脚本堆栈空间配额已用尽”jquery,xml解析错误
- 3. 微软JQuery模板插件:脚本堆栈空间配额已用尽
- 4. 如何耗尽堆
- 5. doseq通过一个简单的懒惰seq耗尽堆空间
- 6. 堆栈空间异常
- 7. 在Haskell程序中从堆栈溢出或堆耗尽中恢复
- 8. Firefox内容脚本内存消耗
- 9. 堆栈溢出:在堆栈空间中复制临时分配?
- 10. 计算耗尽时间
- 11. 堆栈空间不足错误
- 12. 堆栈空间溢出与ST monad
- 13. Excel VBA“堆栈空间不足”错误
- 14. 堆栈上分配多少空间
- 15. Windows会回收堆栈空间吗?
- 16. 的堆栈空间 - 在公式中
- 17. 进程虚拟内存 - 堆栈和堆之间的空间
- 18. EmptyStackException非空堆栈
- 19. 我会在这段代码后最终耗尽堆栈内存吗?
- 20. 在循环查看充气期间在堆上耗尽内存堆
- 21. 在java脚本继承中堆栈流!
- 22. 创建堆栈时运行bash脚本
- 23. 脚本Unity后处理堆栈
- 24. EMR 5.0 + Spark无尽循环堆栈
- 25. 何时为本地变量分配堆栈空间?
- 26. 使用文件通道在水槽中耗尽的空间可用空间
- 27. ptrace会中断CPU上下文,用户空间堆栈还是内核堆栈?
- 28. 为什么PostgreSQL会耗尽我所有宝贵的HD空间?
- 29. Haskell非耗尽
- 30. GLES2 TouchEventPool耗尽
这是一个好主意,只是为了确保问题出在firefox本身 – annakata 2009-06-16 08:40:17
它与firefox本身 – Andromeda 2009-06-16 08:49:31