UWP Утечка памяти - PullRequest
       5

UWP Утечка памяти

0 голосов
/ 06 июля 2018

У меня проблема с UWP. Я думаю, что есть большая проблема утечки памяти во взглядах. Память о взглядах его больше не отпускала. Вы можете реализовать это на любой навигации. Правильное решение проблемы с навигацией - это кеш навигации, хорошо, но у меня есть список с очень сложным шаблоном. Каждый раз, когда элемент вставляется в представление списка, создается новое представление шаблона элемента, которое больше не публикуется. я написал небольшой пример. MemoryLeakExample Нажмите на кнопку вставки 20 предметов. Приложение запускается с 24 МБ памяти. После 5 кликов мы находимся на 100 МБ. Почему?

Кто-нибудь может мне помочь и сказать, что я делаю не так?

Привет, Нико

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Если кому-то это интересно. Ответ: ответа нет.

Я отправил ошибку в Microsoft с этим, и после трех месяцев написания примеров для Microsoft, покажите и объясните им ошибку, поговорите с людьми Microsoft и потратите много времени на то, чтобы потратить на них ошибку, они подали ошибку на это и предоставило образец для команды продукта.

Итак, утечка памяти реальна, и мой Код не просто плохой код.

0 голосов
/ 14 декабря 2018

Microsoft сказала мне на этой неделе, что они исправили ошибку! Это была утечка ручки. Они помещают его в окна в предварительной сборке, и исправление будет отправлено с весенним обновлением для окон. Надеюсь, это настоящий и последний ответ на эту утечку ...

0 голосов
/ 06 июля 2018

Вы можете диагностировать это с помощью инструмента использования памяти в Visual Studio. Подробные инструкции можно найти в Диагностика проблем с памятью с помощью нового инструмента использования памяти в Visual Studio . И вы можете сделать снимок, чтобы зафиксировать состояние памяти приложения. Для более подробной информации вы можете обратиться к этому ответу case .

И я также проверил ваш код. Я обнаружил, что вы использовали Page как DataTemplate. И это нет хорошей идеи Потому что вы создадите больше экземпляра страницы, когда добавите элемент в список. И Виртуализация пользовательского интерфейса не будет работать. Я подтвердил это с помощью Memory Usage Tool . Пожалуйста, проверьте следующий снимок экрана.

enter image description here

Количество TestBlockView увеличено на 11 и потребляет больше памяти.

И я попытался поместить все TestBlockView xaml в DataTemplate. Независимо от того, сколько предметов я добавлю, память останется в разумных пределах.

По вашему требованию вы можете сделать DataTemplate напрямую, а не Page. И вы также можете использовать UserControl для замены Page.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...