Memory leaks 图表创建/渲染/销毁周期中的内存泄漏

Memory leaks 图表创建/渲染/销毁周期中的内存泄漏,memory-leaks,dojo,dojox.charting,Memory Leaks,Dojo,Dojox.charting,我有一个非常基本的问题。chart.destroy()不应该删除和清理内存吗?如果是,为什么下面的代码会占用内存?请注意,您不会看到任何图表,因为它会立即被销毁。我正在使用谷歌Chrome的任务管理器来查看内存使用情况,20分钟后,它将远远超过200MB 我知道updateSeries(),但这不是我想要的,在每次迭代中,所有图表属性都可能会发生变化(标题、轴、绘图、数据、颜色等),因此我认为最简单的方法是销毁图表并重新创建它。即使有更好的方法来解决我的问题,我想知道什么是摆脱图表及其所有内存绑

我有一个非常基本的问题。chart.destroy()不应该删除和清理内存吗?如果是,为什么下面的代码会占用内存?请注意,您不会看到任何图表,因为它会立即被销毁。我正在使用谷歌Chrome的任务管理器来查看内存使用情况,20分钟后,它将远远超过200MB

我知道updateSeries(),但这不是我想要的,在每次迭代中,所有图表属性都可能会发生变化(标题、轴、绘图、数据、颜色等),因此我认为最简单的方法是销毁图表并重新创建它。即使有更好的方法来解决我的问题,我想知道什么是摆脱图表及其所有内存绑定的最佳方法

一个注意事项:如果删除addPlot、addAxis和addSeries行(因此只剩下new、render和destroy),仍然会得到相同的高内存使用率。此外,我正在使用1.8.0

谢谢

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript" src="dojo/dojo.js" djconfig="isDebug: true"></script>

<script type="text/javascript">

  dojo.require("dojox.charting.Chart2D");

  runCharts = function() {
    setTimeout(makeCharts, 100);
  };

  makeCharts = function(){
    var chart1 = new dojox.charting.Chart2D("simplechart", {delayInMs:0});
    chart1.addPlot("default", {type: "Lines"});
    chart1.addAxis("x");
    chart1.addAxis("y", {vertical: true});
    chart1.addSeries("Series 1", [1, 2, 2, 3, 4, 5, 5, 7]);
    chart1.render();
    chart1.destroy();
    setTimeout(makeCharts, 100);
  };

  dojo.addOnLoad(runCharts);
</script>

<div id="simplechart" style="width: 250px; height: 150px;"></div>

require(“dojox.charting.Chart2D”);
运行图=函数(){
设置超时(makeCharts,100);
};
makeCharts=函数(){
var chart1=new dojox.charting.Chart2D(“simplechart”{delayInMs:0});
图表1.addPlot(“默认值”{type:“Lines”});
图1.添加轴(“x”);
图1.addAxis(“y”{vertical:true});
图1.添加系列(“系列1”、[1、2、2、3、4、5、5、7]);
图1.render();
图1.销毁();
设置超时(makeCharts,100);
};
addOnLoad(运行图);

不确定这是否有用,请尝试一下:

    chart1.destroy();
    delete chart1;

不确定这是否有用,请尝试一下:

    chart1.destroy();
    delete chart1;