【问题标题】:Is there a way to find out any information about objects being released using chrome dev tools有没有办法找出有关使用 chrome 开发工具发布的对象的任何信息
【发布时间】: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


【解决方案1】:

问题不是如何通过分析代码找到信息, 但是使用 crhome-dev-tools 找到它

如果问题解释正确,您可以使用console.profile()console.profileEnd()Record Heap Allocation

profiling anonymous javascript functions (chrome)

Are arrow functions optimized like named functions?

How to detect the memory allocations that are triggering garbage collection in JavaScript?

【讨论】:

  • 谢谢,让我看看你提到的资源。能否推荐一本书或文章,尽可能多地了解 Chrome 内存调试能力
  • 谢谢,如果还有什么想起来的,请放在这里
猜你喜欢
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 2014-05-19
  • 2013-01-16
  • 2016-11-25
  • 2016-12-13
  • 2014-07-23
  • 2020-10-03
相关资源
最近更新 更多