在JavaScript中从TypedArray中释放内存的最佳方法是什么?

时间:2017-05-11 14:17:37

标签: javascript

我完全理解垃圾收集器最终将完成它的工作并释放TypedArray中分配的内存,其方式与任何变量或对象完全相同(假设没有循环引用等)。

但是,我在一些WebWorkers中进行了大量的连续处理,因此我希望GC能够尽快释放这些内存。使用普通JavaScript数组,只需设置array.length = 0;就可以做到这一点,但是在使用TypedArray时呢?

以下结果是否会尽快释放内存?

var testArray = new Uint8Array(buffer);

///Do stuff with testArray

tesArray.length = 0;

或者因为TypedArray只是ArrayBuffer的视图,我还需要清除实际的缓冲区本身吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:4)

取消对类型化数组的引用应该足够好了。设置.length = 0不起作用,因为 - 与通常的数组相比 - length property是只读的。

如果您确实遇到垃圾收集器问题,我建议您反复尝试重复使用相同的缓冲区,而不是一直分配新的缓冲区并希望它们被释放。< / p>