浏览器的Javascript堆栈大小限制 [英] Browser Javascript Stack size limit

查看:2374
本文介绍了浏览器的Javascript堆栈大小限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到了一些客户端JavaScript栈溢出的问题特别是在IE浏览器,
这是一个第三方库,使一些函数调用内,出于某种原因,他们偶尔刹车在IE不仅是因为它的低堆栈限制发生。

I am getting some client-side Javascript stack overflow issues specifically in IE browser, this is happening inside a third party library that makes some function calls and for some reason they occasionally brake in IE only due to it's low stack limit.

然后我codeD一个小的测试HTML测试堆栈大小限制一些浏览器,发现IE8竟然有一个小的堆栈限制,如果相比FF 7或Chrome 14与Windows 7操作系统,8GB在笔记本电脑上运行RAM:

I then coded a small test HTML to test the stack size limit for some browsers and found that IE8 has actually a small stack limit if compared to FF 7 or Chrome 14 running on a Laptop with Windows 7 OS, 8Gb RAM:

<html>
<body>

<!-- begin Script: -->
<script type="text/javascript">

function doSomething(){

  var i = 3200;
  doSomethingElse(i);

}

function doSomethingElse(i){
  if (i == 0) return -1;
  doSomethingElse(i-1);
}

doSomething(); 

</script>
<!-- END OF PAGE -->

</body>
</html>

IE引发堆栈溢出,当值约为3200,Firefox和Chrome会相比,IE处理了非常深刻的递归。

IE raises stack overflow when the values are around 3200, Firefox and Chrome can handle a very deep recursion if compared to IE.

我想知道是否有扳平堆栈溢出异常带,在IE或其他浏览器运行期间提出它的JavaScript函数的方式,如果它可以用函数栈在链给堆栈跟踪此刻错误长大。

I would like to know if there's a way to tie the stack-overflow exception with the Javascript function that raised it during runtime in IE or any other browser and if it could give the stacktrace with the chain of function in the stack at the moment the error was raised.

推荐答案

使用一个简单的测试

var i=0;
function inc() {
    i++;
    inc();
}
inc();

的Internet Explorer


  • IE6:1130

  • IE7:2553

  • IE8:1475

  • IE9:20678

  • IE10:20677


    • 3.6:3000

    • 4.0:9015

    • 5.0:9015

    • 6.0:9015

    • 7.0:65533

    • 8B3:63485

    • 17:50762

    • 18:52596

    • 19:52458

    • 42:281810


    • 14:26177

    • 15:26168

    • 16:26166

    • 25:25090

    • 47:20878

    • 51:41753


    • 4:52426

    • 5:65534

    • 9:63444


    • 10.10:9999

    • 10.62:32631

    • 11:32631

    • 12:32631

    在关于你的问题,使用浏览器的开发人员工具查看堆栈。在IE 8+,按<大骨节病> F12 ,去到脚本选项卡,然后单击开始调试。当一个异常被抛出这将打破,你可以看到调用堆栈。您也可以使用Chrome的开发者工具,<大骨节病>控制 + <大骨节病>移 + <大骨节病>Ĵ

    In regard to your question, use your browser's developer tools to see the stack. In IE 8+, hit F12, go to the Script tab, and click Start Debugging. It will break when an exception is thrown, and you can see the call stack. You can also use Chrome's developer tools, Ctrl+Shift+J.

    这篇关于浏览器的Javascript堆栈大小限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆