Я случайно обнаружил проблему в своем приложении. Я использую шаблон 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>