Очистка памяти в Avalonia UI C#

Всем привет, у меня есть проект на фреймворке Avalonia, дополнительно использую Actipro и паттерн MVVM. Возник вопрос по очистке памяти при вызове метода Dipose у ViewModel.

У меня есть ObservableCollection, которая привязывается в ItemsControl через ItemsSource="{Binding Lines, Mode=OneWay}". В проекте реализован DI-контенер и есть сервис по навигации ViewModel.

Вот сервис:

    public async Task NavigateTo<T>() where T : ViewModelBase
    {
        if (_currentView is IDisposable disposable)
        {
            disposable.Dispose();
            CurrentView = null;
        }

        // Создаём новый экземпляр через DI
        var viewModel = _serviceProvider.GetRequiredService<T>();
        CurrentView = viewModel;

        // Настраиваем заголовок страницы и параметры меню
        if (viewModel is AuthViewModel)
        {
            TitlePage = "Авторизация";
            IsActiveToggleMenu = false;
        }
        else if (viewModel is HomeViewModel)
        {
            TitlePage = "Главная";
            IsActiveToggleMenu = true;
        }
        else if (viewModel is EquipmentViewModel equipmentViewModel)
        {
            TitlePage = "Оборудование";
            //Метод, который подгружает данные из БД
            await equipmentViewModel.LoadLines();
        }
        else
        {
            TitlePage = viewModel.GetType().Name;
        }
    }

Получается, что при смене ViewModel я иду в DI и получаю нужный сервис. Далее вызываю метод Dispose у предыдущей ViewModel и устанавливаю CurrentView.

Вот тут то у меня и вопросы, если я очищаю объект во ViewModel:

    private bool _disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (_disposed)
            return;

        if (disposing)
        {
            // Очистка управляемых ресурсов
            IsTogglePreviewMenuOpen = false;
            IsAddLineMenuOpen = false;
            IsToggleEditMenuOpen = false;

            Equipments.Clear();
            Lines.Clear();

            Equipments = null;
            Lines = null;

            OnPropertyChanged(nameof(Equipments));
            OnPropertyChanged(nameof(Lines));

            _controlService.SideMenuStateChanged -= OnSideMenuStateChanged!;

            Log.Information("[EquipmentViewModel Dispose] Ресурсы очищены");
        }

        _disposed = true;
    }

    ~EquipmentViewModel()
    {
        Dispose(false);
    }

Вот мои коллекции:

    [ObservableProperty]
    private ObservableCollection<LineModel> _lines = [];
    [ObservableProperty]
    private ObservableCollection<EquipmentModel> _equipments = [];

Как мне сделать так чтобы UI больше не ссылался на эти объекты. Если например, 10 раз туда-сюда открывать и закрывать View, то к используемой памяти будет +5 МБ. Проблема не связана с не правильный запросами БД, я отключал все сервисы и проблема заключается скорее всего в UI. Надеюсь на помощь :)

введите сюда описание изображения

введите сюда описание изображения


Ответы (0 шт):