Cleaning Memory Resources Correctly

Articles from our data visualization specialists. Subscribe to get insights on latest trends and news.

Moderator: Queue Moderators

Post Reply
TatianaBartceva
Posts: 2
Joined: Thu Oct 13, 2016 2:48 pm

Cleaning Memory Resources Correctly

Post by TatianaBartceva » Fri Oct 21, 2016 1:36 pm

Application should dispose existing objects before clearing related collection.

LightningChart provides predefined collections, e.g. XAxes, YAxes, PaletteSteps, etc. in WinForms and WPF Non-bindable platforms. In WPF Semi-bindable and Bindable platforms they should be created manually (e.g. ViewXY.CreateDefaultXAxes()). Moreover, a user’s application can have created collections of series, annotations, markers, cursors, etc.

If a user needs to recreate new specific collection for the chart without modifying the existing one, the old collection should be removed properly to use memory resources efficiently.

The following lines clean y-axes collection. However, the resources inside the application have not been freed, and they still reserve memory.

Code: Select all

// Clear Y axes. Incorrect.
chart.ViewXY.YAxes.Clear();
Instead of using .Clear() method for collection, call .Dispose() for each item and clean the collection. Dispose method releases any resources from memory for clean-up.

Code: Select all

// Remove existing Y-axes. Correct.
foreach (AxisY yAxis in chart.ViewXY.YAxes)
         yAxis.Dispose();
chart.ViewXY.YAxes.Clear();

// Create new Y-axes collection
for (int axisY = 0; axisY < axisYCounter; axisY++)
{
        // Create your axes here
}
In our Demo applications, we have an auxiliary method to make proper resource cleaning:

Code: Select all

//Remove all y-axes
ExampleUtils.DisposeAllAndClear(chart.ViewXY.YAxes);

Author: Nikolai Arsenov, software developer and quality control specialist at Arction Ltd.

Post Reply