相关疑难解决方法(0)

如何检测在JavaScript中触发垃圾收集的内存分配?

在JavaScript库(铆钉)中查找性能问题时,我发现垃圾收集在运行中发生了三到四次,占用了大约15%的执行时间(使用Chrome DevTools JS Profile).

由于垃圾收集的原因,至少有30个临时功能/对象被创建为潜在候选者的地方.

我想知道是否有办法找到哪些函数负责分配被垃圾收集的内存,所以我可以集中我的性能调优.

我记录了Heap Allocation TimeLine,但它没有区分垃圾收集的内存和仍然保存引用的内存(DevTools doc中没有指向灰色栏)

还记录堆分配配置文件没有运气.

javascript garbage-collection memory-management google-chrome-devtools

5
推荐指数
1
解决办法
358
查看次数

HTML节点树中的哪些地方存储了动态生成的元素?

我使用JavaScript中的以下代码行动态创建元素:

const element = document.createElement("img");
Run Code Online (Sandbox Code Playgroud)

我能够访问和修改元素的属性,所以它显然存在,但我无法弄清楚它是存储在HTML节点树中的位置.

element.parentNodeelement.previousSibling都返回null.有谁知道它实际位于何处?

html javascript

4
推荐指数
1
解决办法
61
查看次数

清除数组时,数组内的javascript对象是否从内存中擦除?

我从来没有真正考虑垃圾收集,我不知道在制作小型javascript游戏/应用程序时是否有必要考虑.任何建议都表示赞赏,但最后我会问我的具体问题.

很多时候我都会编写这种形式的代码:

var foos=new Array();
generateFoos();
function generateFoos()
{
    foos=[];
    for (fooIndex=0;fooIndex<numberOfFoos;fooIndex++)
    {
        foos[fooIndex]=new foo(Math.random(),Math.random());
    }
} 
function foo(bar,bas)
{
   this.bar=bar;
   this.bas=bas;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,当我说foos=[](第5行)时,这是从内存中删除该数组中的对象还是在某处浮动,使程序变大和变慢?如果我想在generateFoos()每次用户按键时调用一次时间,我该怎么办?

谢谢!

javascript garbage-collection

3
推荐指数
2
解决办法
1981
查看次数