【发布时间】:2017-02-05 06:49:21
【问题描述】:
我有以下代码:
var constructors=[];
var counter = 0;
function start() {
for (var i=100; i> 0; i--) {
constructors.push(new arrayValues());
}
if (counter < 10) {
setTimeout(function() {
start();
}, 1000);
}
counter++;
}
function arrayValues() {
this.values = new Array(10000000).join("x");
}
这会创建虚拟数组并造成内存泄漏。这种模式在时间轴上清晰可见。但我也可以看到有对象的释放(用红线标记)。有没有办法找到有关被释放对象的任何信息,例如,它们创建的时间或地点等?
问题不是如何通过分析代码找到信息,而是使用crhome-dev-tools找到它
【问题讨论】:
-
我会假设
join使用临时内存,该内存很快就会被 GC 释放。您首先创建数组,然后将其转换为字符串,因为前面的步骤数据留给 GC。 -
“有没有办法找到有关被释放对象的任何信息,例如,它们创建的时间或地点等?”创建?
-
@guest271314,他们可以通过
constructors数组访问 -
@ASDFGerte,谢谢,但问题不是如何通过分析代码找到它,而是使用 crhome-dev-tools 找到它
-
@Maximus "它们可以通过
constructors数组访问" 不确定您的意思?您是否正在尝试查看在DevTools进行的函数调用?
标签: javascript performance memory-management google-chrome-devtools