请考虑以下javascript。我原以为循环中的分配将允许垃圾收集来防止堆溢出。它在 Firefox 中这样做是正确的,但是在 Chrome(在 OSX 上测试)中,该片段在多次迭代后会导致打开的选项卡崩溃。
for (var i = 0; i < 1024; ++i) {
// Allocate a 16mb buffer
var buffer = new Float32Array(1024*1024*4);
// Try to explicitly mark it for free by either
delete buffer;
// or
buffer = null;
console.log(i);
}
这个脚本本身并没有那么有用。但我正在尝试优化我的 Javascript 应用程序,以使其使用更少的内存。因此,我想听听您的意见。这是 Chrome 中的错误吗?您是否知道在代码执行期间显式调用垃圾收集的任何解决方法(在 FF 和 IE 中它们似乎存在)?谢谢!
编辑:Chrome Inspector 上似乎存在一个名为“收集垃圾”的按钮。它是检查器“时间轴”面板下栏上的第 7 个按钮。这不是表示存在从 Javascript 调用 GC 的方法吗?毕竟,Inspector 的一部分不是用 Javascript 编写的吗?