在我的项目中,我发现javascript字符串和数字可能占用太多非堆内存的问题。以下代码片段可以显示结果。
let len = 1000000 * 5;
for (var i = 0; i < len; i++) {
window['str' + i] = 'helloworld'
}
这是我的问题:我怎么能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
}