3

Я пытаюсь профилировать приложение UWP (Universal Windows Platform) в Visual Studio, чтобы увидеть, что приводит к тому, что использование моей процессорной памяти настолько велико.Приложение UWP: использование памяти процесса против использования кучи

Я использую встроенные средства диагностики Visual Studio, и мне не повезло. Он показывает мое использование памяти процесса на 93 мегабайта, в то время как куча показывает 12,17 МБ, а управляемая куча - 1,56 МБ.

enter image description here

Был только другой случай, когда пробежал Использование памяти процесса до около 458 МБ и хранится лазание, но когда я сделал снимок, он не сказал мне значения любого из объектов, должен был вызвать его, а фактическая память, которую он утверждал, была настолько меньше, чем память процесса.

enter image description here

Я не уверен, если я просто не понимаю, как работает профайлер, или я просто делаю что-то совершенно неправильно полностью.

+1

Управляемая куча хранит массу памяти спереди, фактически не используя ее. Цифры, которые вы получаете за * Managed Heap *, - это количество используемой управляемой кучи. Неиспользованная управляемая куча по-прежнему способствует использованию памяти вашего приложения. При написании кода на неуправляемом языке цифры будут менее запутанными. – IInspectable

+0

@Inpectable, который имеет большой смысл, но зачем ему выделять столько памяти, сколько необходимо? Существуют и другие случаи, когда мое использование памяти процесса составляет около 700 МБ, а моя управляемая куча по-прежнему составляет всего около 50 МБ. –

+0

@IInspectable. Я просто добавил еще одну фотографию с несколькими снимками, которые пытаются объяснить мою проблему. –

ответ

3

Простой ответ - даже если ваше приложение написано на C# - оно по-прежнему выделяет большие объемы встроенной памяти.

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

Второе - убедитесь, что ваши списки виртуализированы. Если вы загружаете 1000 изображений в память - даже если они маленькие, они все равно будут использовать много памяти. По умолчанию элементы управления списком, такие как ListBox, ListView или GridView, являются виртуализированными, если вы не поместили их в ScrollViewer или измените значение по умолчанию ItemsPanel на тот, который не виртуализирован.

+0

Я обязательно посмотрю на это. Я заметил, что просто базовое приложение, в котором ничего нет, использует 40 МБ, это неплохо, но это тоже не самое лучшее. –

Смежные вопросы