Javascript 为什么我通过Array.join泄漏内存?

Javascript 为什么我通过Array.join泄漏内存?,javascript,Javascript,这行代码的内存将增加约100 MB,并且不会被释放: var json = new Array(100000000).join(","); 为什么?如中所述,数组中的每个元素将占用近一个字节。100000000字节大约是95MB。在垃圾回收器运行之前(垃圾回收器认为合适的时候),将不会释放为阵列保留的内存 如合同所述: 大多数内存管理问题都出现在这个阶段。这里最困难的任务是找到“不再需要分配的内存”的时间。它通常要求开发人员确定在程序中的什么地方不再需要这样的内存并释放它 因此,当浏览器确定

这行代码的内存将增加约100 MB,并且不会被释放:

var json = new Array(100000000).join(","); 
为什么?

如中所述,数组中的每个元素将占用近一个字节。100000000字节大约是95MB。在垃圾回收器运行之前(垃圾回收器认为合适的时候),将不会释放为阵列保留的内存

如合同所述:

大多数内存管理问题都出现在这个阶段。这里最困难的任务是找到“不再需要分配的内存”的时间。它通常要求开发人员确定在程序中的什么地方不再需要这样的内存并释放它


因此,当浏览器确定不再需要内存时,或者当开发人员明确表示不再需要内存时(在该页面的其他地方演示了),内存将被释放。

我无法复制该问题。释放内存可能需要一些时间(10-30秒?),但它最终会被释放,至少在Chrome中是这样,你怎么知道它不会被释放?GC在需要时才运行。此外,考虑到这是高度人工的代码,您不会在实际项目中使用它,您在遇到这种情况时实际在做什么?在javascript中不需要预先定义数组大小,只需根据需要进行设置,任何没有显式绑定内容的索引在取消引用时都将返回
undefined