在循环中调用Plotly.plot()时内存泄漏(JavaScript)
我也在plotly论坛上发布了这篇文章,但该论坛似乎并不十分活跃 大家好, 我在一个更大的Asp.NETWebForms应用程序中使用plotly.js(也使用telerik控件),偶然发现内存泄漏(在IE11中测试)。我尝试了不同的方法,并创建了一个小示例(参见下面的代码)。在代码中,我创建了一个带有4000x4000个随机数据点的柱状图,并在循环中绘制了10次(按下“Replot Traces”按钮)。我希望下一次迭代中的新plot()-调用只会“覆盖”前一次迭代的plot。但是内存使用会增加,直到我的内存用完 删除整个绘图或调用GC没有帮助(内存只减少了一点点) 有没有人有过类似的问题,并且知道如何处理。有没有一种方法可以在不重新加载整个页面的情况下完全重置/清除绘图(因为在我的大型应用程序中,我使用的是Ajax,不能每次都重新加载整个页面) 提前谢谢在循环中调用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。但是内存使用会增
<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