更改css样式会触发次要GC

时间:2015-09-28 16:06:28

标签: jquery css performance garbage-collection

我在申请中面临内存问题。为了调查这个问题,我决定缩小范围。所以,我写了以下示例程序,我创建了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块。

enter image description here     所以,我用原生的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减少到两次出现。但他们仍然在那里。

enter image description here

当我注释掉以下行时,没有GC

   object.style.backgroundColor="red";

所以,我的问题是

  1. 为什么我在某些风格变化中看到这两个小型GC以及如何避免这些小型GC?
  2. 使用jQuery.css,为什么会有更多的GC被触发。

0 个答案:

没有答案