图表创建/渲染/销毁循环中的内存泄漏

时间:2013-02-08 19:23:35

标签: memory-leaks dojo dojox.charting

我有一个非常基本的Chart2d问题。是不是chart.destroy()应该删除和清理内存?如果是,为什么以下代码成为记忆猪?请注意,您不会看到任何图表,因为它会立即被销毁。我正在使用谷歌浏览器的任务管理器来查看内存使用情况,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>

1 个答案:

答案 0 :(得分:1)

不确定这是否会有所帮助,请尝试一下:

    chart1.destroy();
    delete chart1;