我在申请中面临内存问题。为了调查这个问题,我决定缩小范围。所以,我写了以下示例程序,我创建了1000 * 10的表。
$('#tableDiv').innerHTML = "" ;
var i,j;
for (i=0; i<1000; i +=1 ) {
for (j=0; j<10 ;j+=1 ) {
// some html code
}
}
$("#buttonClick").click(function() {
$('.levels').css({"background-color":"red"});
}
});
单击按钮,我正在更改该表内所有div的背景颜色。当我使用chrome profiler分析这个动作时,我看到了6-7个小GC块。
所以,我用原生的javascript实现替换了jquery.css。
$("#buttonClick").click(function() {
var objects=document.getElementsByClassName("levels");
if(objects){
var objLength=objects.length;
var object;
for(var i=0;i<objLength;i++){
object=objects[i];
object.style.backgroundColor="red";
}
}
});
次要GC减少到两次出现。但他们仍然在那里。
当我注释掉以下行时,没有GC
object.style.backgroundColor="red";
所以,我的问题是