1

我有一个非常基本的 Chart2d 问题。chart.destroy() 不应该删除和清理内存吗?如果是,为什么以下代码会占用内存?请注意,您不会看到任何图表,因为它会立即被销毁。我正在使用 Google 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>
4

1 回答 1

1

不知道这是否有帮助,试试这个:

    chart1.destroy();
    delete chart1;
于 2013-03-11T18:27:37.250 回答