【问题标题】:ChartPlotter memory increase when I draw the chart and never decrease当我绘制图表时,ChartPlotter 内存增加并且从不减少
【发布时间】:2020-01-13 03:25:15
【问题描述】:

我使用 DynamicDataDisplay.ChartPlotter 绘制图表,每次重绘图表时内存都会增加。因此,当我重绘 200 次时,我的应用程序的图表内存增加到 200 个月。

我尝试手动 GC.Collect() 但没有任何改变。

    private ChartPlotter _courbeChartPlotter;
    public ChartPlotter CourbeChartPlotter
    {
        get { return _courbeChartPlotter; }
        set
        {
            _courbeChartPlotter = value;
            RaisePropertyChanged();
        }
    }

    private static ListPointD3Cs _listeX = new ListPointD3Cs { new Point(0, 0) };
    private static EnumerableDataSource<Point> dsX = new EnumerableDataSource<Point>(_listeX);
    private int nbPoint = 0;

    public void TakeMeasureTest()
    {
        nbPoint++;
        _listeX.Add(new Point(nbPoint, GetRandomNumber(-1, 1)));
        InitDotsCourbe(out dsX);
        TraceCourbe(dsX);
    }

    public void InitDotsCourbe(out EnumerableDataSource<Point> dsX)
    {
        dsX = new EnumerableDataSource<Point>(_listeX);
        dsX.SetXMapping(x => x.X);
        dsX.SetYMapping(y => y.Y);
    }


    public ChartPlotter TraceCourbe(EnumerableDataSource<Point> dsX)
    {
        CourbeChartPlotter = new ChartPlotter();
        ViewPortAxesRangeRestriction restr = new ViewPortAxesRangeRestriction
        {
            XRange = new DisplayRange(0, nbPoint + 1),
            YRange = new DisplayRange(-2, 2)
        };
        CourbeChartPlotter.Viewport.Restrictions.Add(restr);
        CourbeChartPlotter.AddLineGraph(dsX, Colors.Red, 2, "X");
        return CourbeChartPlotter;
    }

我希望每次重绘图表时内存不会增加,或者至少在我GC.Collect() 时,毕竟 Measure 检索正常的内存使用情况。

【问题讨论】:

    标签: c# wpf memory mvvm garbage-collection


    【解决方案1】:

    我假设您通过重复调用 TraceCourbe 方法并重新分配 CourbeChartPlotter 属性,然后显示它来重绘图表。在这种情况下,您可能有内存泄漏,因为某些东西(例如另一个属性、控件或事件订阅者)持有对您的 ChartPlotter 控件的引用,即使在重新分配和理论上删除它之后(您的情况可能类似于 @ 987654321@).

    您可以改为重新分配图表的数据源,如 here 所述。

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 1970-01-01
      • 2022-11-25
      • 2018-05-10
      • 1970-01-01
      • 2012-05-30
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多