Hello,
I am facing application crash issue with : Out of memory exception.
While analysing, we got to know that scatterDataPoint is taking more memory
I am trying to add multiple ScatterLineSeries in telerik:RadCartesianChart.
XAML Code :
<telerik:RadCartesianChart Palette="Windows8" MouseDoubleClick="RadCartesianChart_MouseDoubleClick">
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:LinearAxis Minimum="0"
Maximum="5000"/>
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:LinearAxis Minimum="0"
Maximum="10000" />
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Series>
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Red" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Blue" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Pink" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Yellow" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Green" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Orange"/>
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="AliceBlue" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Black" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Violet" />
<telerik:ScatterLineSeries ItemsSource="{Binding}" YValueBinding="YValue" XValueBinding="XValue" BorderBrush="Red" StrokeThickness="3" Stroke="Cornsilk" />
</telerik:RadCartesianChart.Series>
</telerik:RadCartesianChart>
I am updating value in specific time intervarl. Example:
We have created 1 observable collection in which we are adding plot values(xaxis,yaxis)
public class PlotInfo
{
public double XValue { get; set; }
public double YValue { get; set; }
}
ObservableCollection<PlotInfo> ColPlotInfo = new ObservableCollection<PlotInfo>();
//Initially adding 100 records in observable collection & binding values to CartesianChart series.
ArrayPlotInfo = arrayPlotInfo = new ChartViewModel.PlotInfo[100];
for (int i = 0; i<100; i++)
{
ColPlotInfo.Add(new ChartViewModel.PlotInfo() { XValue = i + 100, YValue = i + 101 });
}
On double click of chart, we are adding records on Timer_Elapsed.
private void RadCartesianChart_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
Timer timer = new Timer(100);
timer.Enabled = true;
timer.Elapsed += Timer_Elapsed;
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
ChartViewModel.PlotInfo plotInfo = new ChartViewModel.PlotInfo() { XValue = (x = x + DateTime.Now.Second), YValue = DateTime.Now.Second };
ColPlotInfo.Add(plotInfo);
});
}
Here if we do not bind to series then memory is not icreaseing it only increases when we update graph and application gets crashed.
I tried many things like –
- Used the items virtualization feature and restrict the viewport
- Tried different rendering options for ScatterLineSeries.
- Kept minimum bindings
- Used ObservableCollection for binding datapoints
- Enabled caching
Can anyone please help me with this? What else can I try so that memory increasing will be restrict?
Hi Renuka,
Are you removing some points anywhere in your code as well? It seems that the application is adding points endlessly. After how much time are you receiving the exception?
We have an example showing you can implement a similar live updated chart in our Demo application. Can you check it and see how it fits in your scenario?
I am looking forward to your reply.
Hi Renuka,
I do not have a link since the demo app is not a web application, it is a standalone WPF app that uses all of our controls. You can find more about it here: Installing WPF Demos application.
Let me know if you have additional questions.