如何回收JavaScript中许多字符串使用的内存

时间:2017-05-19 08:27:44

标签: javascript google-chrome garbage-collection

在我的项目中,我发现javascript字符串和数字可能占用太多非堆内存的问题。以下代码片段可以显示结果。

let len = 1000000 * 5;
for (var i = 0; i < len; i++) {
    window['str' + i] = 'helloworld'
}

我使用谷歌浏览器,任务管理器可能如下所示: enter image description here

这是我的问题:我怎么能gc那部分内存?我尝试通过删除语法删除引用或将引用设置为null。但是它们都没有工作。所以有一种方法可以将GC触发到该部分内存,即使我知道实际存储不在堆中。

Reference: Memory Analysis 101

我使用以下代码解决了Chrome devTool性能分析:

let len = 1000000 * 5;

for (var i = 0; i < len; i++) {
    window['str' + i] = 20
}

for (var i = 0; i < len; i++) {
    window['str' + i] = null
}

结果是这样的: enter image description here 如您所见,我通过devTool按钮手动触发GC。但是内存仍然需要太多。enter image description here

0 个答案:

没有答案