and many others. In the period of 20 min with the update interval set to 1 sec I have from 4 to 2 thousand new instances of each of those types have been created and haven't been removed. And here is the place where the memory of my application is increased.
If we would check the Call Stack of each of those object types we would found very similar in each case and that would be something like this
AnimationTimeline.AllocateClock()
Clock.AllocateClock(Timeline, bool)
ClockGroup.BuildClockSubTreeFromTimeline(Timeline, bool)
Clock.BuildClockTreeFromTimeline(Timeline, bool)
Timeline.CreateClock(bool)
Storyboard.BeginCommon(DependencyObject, INameScope, HandoffBehavior, bool, long)
Storyboard.Begin(FrameworkElement, HandoffBehavior, bool)
Storyboard.Begin(FrameworkElement, HandoffBehavior)
IndicatorBase.OnValueChanged(double, double)
IndicatorBase.ValuePropertyChangedHandler(DependencyObject, DependencyPropertyChangedEventArgs)
DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs)
FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs)
DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs)
DependencyObject.UpdateEffectiveValue(EntryIndex, DependencyProperty, PropertyMetadata, EffectiveValueEntry, EffectiveValueEntry&, bool, OperationType)
DependencyObject.InvalidateProperty(DependencyProperty)
BindingExpression.Invalidate(bool)
BindingExpression.TransferValue(object, bool)
BindingExpression.ScheduleTransfer(bool)
ClrBindingWorker.NewValueAvailable(bool, bool, bool)
PropertyPathWorker.UpdateSourceValueState(int, ICollectionView, object, bool)
PropertyPathWorker.UpdateSourceValueState(int, ICollectionView)
PropertyPathWorker.OnPropertyChangedAtLevel(int)
ClrBindingWorker.OnSourcePropertyChanged(object, string)
PropertyPathWorker.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type, object, EventArgs)
WeakEventManager.DeliverEventToList(object, EventArgs, WeakEventManager.ListenerList)
PropertyChangedEventManager.OnPropertyChanged(object, PropertyChangedEventArgs)
MonitoringElement.NotifyPropertyChanged(string)
MonitoringPerformanceCounter.set_Value(float)
MonitoringPerformanceCounter.UpdateMonitoringElementIndicators()
MonitoringGroup.UpdateGroupElementsIndicators()
MonitoringGroupList.UpdateMonitoringElementsIndicatorsInAllGroups()
MonitoringServerInfoHolder.UpdateIndicators()
Dashboard.UpdaterTimer_Tick(object, EventArgs)
DispatcherTimer.FireTick(object)
So, as you can see those objects are created in response to update RadGauge's value and most probably they are created to perform smooth moving from previous value to new one.
Unfortunately, I can't attach the Profiler screen shots as I didn't found if this is possible in your forums.
Any help will be appreciated.