diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionSimplePen.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionSimplePen.cs index 8e99a1cc01..725959c728 100644 --- a/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionSimplePen.cs +++ b/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionSimplePen.cs @@ -1,12 +1,19 @@ -using System; using Avalonia.Media; -using Avalonia.Media.Immutable; -using Avalonia.Rendering.Composition.Server; -using Avalonia.Rendering.Composition.Transport; namespace Avalonia.Rendering.Composition.Server; internal partial class ServerCompositionSimplePen : IPen { IDashStyle? IPen.DashStyle => DashStyle; -} \ No newline at end of file + + /// + public override void Dispose() + { + // Remove the pen from the brush observers. + // Without this, the pen was being retained in memory by long lived brush resources (e.g. those defined in + // the theme or app resources), hence was causing memory leaks; see Issue #16451 + RemoveObserversFromProperty(ref _brush); + _brush = null; + base.Dispose(); + } +}