在循环中调用Plotly.plot()时内存泄漏(JavaScript)

在循环中调用Plotly.plot()时内存泄漏(JavaScript),javascript,memory-leaks,garbage-collection,plotly,Javascript,Memory Leaks,Garbage Collection,Plotly,我也在plotly论坛上发布了这篇文章,但该论坛似乎并不十分活跃 大家好, 我在一个更大的Asp.NETWebForms应用程序中使用plotly.js(也使用telerik控件),偶然发现内存泄漏(在IE11中测试)。我尝试了不同的方法,并创建了一个小示例(参见下面的代码)。在代码中,我创建了一个带有4000x4000个随机数据点的柱状图,并在循环中绘制了10次(按下“Replot Traces”按钮)。我希望下一次迭代中的新plot()-调用只会“覆盖”前一次迭代的plot。但是内存使用会增

我也在plotly论坛上发布了这篇文章,但该论坛似乎并不十分活跃

大家好,

我在一个更大的Asp.NETWebForms应用程序中使用plotly.js(也使用telerik控件),偶然发现内存泄漏(在IE11中测试)。我尝试了不同的方法,并创建了一个小示例(参见下面的代码)。在代码中,我创建了一个带有4000x4000个随机数据点的柱状图,并在循环中绘制了10次(按下“Replot Traces”按钮)。我希望下一次迭代中的新plot()-调用只会“覆盖”前一次迭代的plot。但是内存使用会增加,直到我的内存用完

删除整个绘图或调用GC没有帮助(内存只减少了一点点)

有没有人有过类似的问题,并且知道如何处理。有没有一种方法可以在不重新加载整个页面的情况下完全重置/清除绘图(因为在我的大型应用程序中,我使用的是Ajax,不能每次都重新加载整个页面)

提前谢谢

<head>
  <!-- Plotly.js -->
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
  <div id="myDiv"><!-- Plotly chart will be drawn inside this DIV --></div>
  <div id="delete" style="margin-left:80px;">
      <button style="background: red;" onclick="deletePlot()">Delete/Purge</button>
  </div>

  <div style="margin-left:80px;">
      <button style="background: green;" onclick="plotAll()">Replot Traces</button>
  </div>

  <div style="margin-left:80px;">
      <button style="background: blue;" onclick="CallGC()">Call GC</button>
  </div>

    <script>
        function deletePlot(){
            Plotly.purge('myDiv');
        }

        function plotAll()
        {
            var n = 4000

            var s2dArray = '[';
            for (var i=0; i <n; i++)
            {
                s2dArray = s2dArray.concat('[');
                for (var j=0; j <n; j++)
                {
                    s2dArray = s2dArray.concat(Math.round((Math.random() * 100) + 1));
                    if(j < n-1)
                    {
                        s2dArray = s2dArray.concat(',');
                    }
                }
                s2dArray = s2dArray.concat(']');
                if(i < n-1)
                {
                    s2dArray = s2dArray.concat(',');
                }
            }
            s2dArray = s2dArray.concat(']');

            var data = [
            {
                z: JSON.parse(s2dArray),
                type: 'heatmap'
                }
            ];

            for(var i =0; i<10; i++)
            {
                Plotly.plot('myDiv', data, {}, {showSendToCloud: true});
                console.log(i);
            }
        }

        function CallGC()
        {
            CollectGarbage();
        }
    </script>
</body>

删除/清除
雷普特痕迹
呼叫GC
函数deletePlot(){
Plotly.purge('myDiv');
}
函数plotAll()
{
var n=4000
变量s2dArray='[';
对于(var i=0;i