【发布时间】:2012-06-26 22:47:35
【问题描述】:
我正在尝试构建一个网页,我需要在 JavaScript 中铲出大约 100MB 的数据。使用不同的浏览器时,我会在不同的数据量下遇到“超出最大调用堆栈大小”错误。
我是否可以通过检查我的代码并尝试将函数内的局部变量移动到更全局的范围以尝试将它们分配到堆而不是堆栈上来解决此问题?还是这些概念在 JavaScript 中不存在? (据我所知,我的数据中没有任何主要的递归循环,所以确实是几个巨大的字符串/数字数组似乎导致了错误)
如果这不可能,有没有办法让浏览器保留更多内存?
【问题讨论】:
-
你还没有理解你所看到的。发生的事情是你有一个递归函数,即一个调用自身的函数(或调用另一个调用第一个函数的函数)可能是偶然的。
-
您究竟是如何传输(铲除:)所说的 100MB 数据的?您使用的是什么服务器端技术?
-
如果没有您的代码,它将永远是个谜!没有办法回答它。一切都将是猜测。如果没有有问题的代码,您就没有问题。
-
好吧,现在我 150% 确定这不是递归问题(见下文)。但它是一个有点奇怪的机制导致了这个问题,所以在 99.99% 的情况下你可能是对的,这将是一个递归问题,只是这次不是。
标签: javascript memory-management heap-memory stack-memory