我完全理解垃圾收集器最终将完成它的工作并释放TypedArray
中分配的内存,其方式与任何变量或对象完全相同(假设没有循环引用等)。
但是,我在一些WebWorkers
中进行了大量的连续处理,因此我希望GC能够尽快释放这些内存。使用普通JavaScript
数组,只需设置array.length = 0;
就可以做到这一点,但是在使用TypedArray时呢?
以下结果是否会尽快释放内存?
var testArray = new Uint8Array(buffer);
///Do stuff with testArray
tesArray.length = 0;
或者因为TypedArray只是ArrayBuffer
的视图,我还需要清除实际的缓冲区本身吗?如果是这样,怎么样?
答案 0 :(得分:4)
取消对类型化数组的引用应该足够好了。设置.length = 0
不起作用,因为 - 与通常的数组相比 - length
property是只读的。
如果您确实遇到垃圾收集器问题,我建议您反复尝试重复使用相同的缓冲区,而不是一直分配新的缓冲区并希望它们被释放。< / p>