Заполнение ОЗУ при смене представлений - PullRequest
0 голосов
/ 24 октября 2019

Я случайно обнаружил проблему в своем приложении. Я использую шаблон MVVM. Если я начинаю переключаться между представлениями, ОЗУ начинает заполняться и не высвобождаться.

До https://imgur.com/Z48GPpU

Через 1 минуту простого изменения представления https://imgur.com/9r6ULJZ

Я действительно не знаю, как найти проблему. Я дам вам столько информации, сколько вам нужно

Я инициализирую все представления в MainWindowViewModel (он инициализируется первым при запуске приложения)

  private static ViewModel1 VM1;
  private static ViewModel2 VM2;

public MainWindowViewModel()
{
   VM1 = VM1?? new ViewModel1();
   VM2 = VM2?? new ViewModel2();
}

Чтобы получить экземпляр любого представления, я использую это

  public static ViewMidel1 GetVM1()
  {
      if (VM1 == null)
          VM1 = new ViewMidel1();
      return VM1 ;
  }

В другом представлении

ViewMidel1 vm = MainWindowViewMidel.GetVM1();

Все представления являются пользовательскими элементами управления. Когда вид изменился, все свойства запускаются.

Может я что-то не так делаю?

Конструкторы представлений вызывают только при запуске программы.

Диагностика https://gofile.io/?c=pamZlT

ОБНОВЛЕНИЕ 1:

Я удаляю весь код из всех ВМ, и это не помогает. Что-то не так с xaml. https://imgur.com/2oS6d7h

ОБНОВЛЕНИЕ 2: Этот xaml добавляет ~ 15-20 МБ в ОЗУ каждый раз, когда я выбираю просмотр. Размер изображения 108kb

<Ellipse Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Grid.RowSpan="2" Margin="5,5,5,5">
    <Ellipse.Fill>
        <ImageBrush ImageSource="/Resources/Images/image.jpg"  Stretch="UniformToFill"/>
    </Ellipse.Fill>
</Ellipse>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...