Приложение WPF C# показывает очень высокий уровень использования неуправляемой памяти – как определить основную причину?C#

Место общения программистов C#
Anonymous
Приложение WPF C# показывает очень высокий уровень использования неуправляемой памяти – как определить основную причину?

Сообщение Anonymous »

В настоящее время я столкнулся с проблемой очень высокого использования неуправляемой памяти в моем приложении WPF C#, и я пытаюсь определить основную причину.
Из результатов профилирования я вижу:
  • Общий объем используемой памяти: ~1,45 ГБ
  • Неуправляемая память: ~1,28 ГБ
  • Управляемая куча (Gen 0/1/2): относительно нормально
  • LOH: ~62 МБ
Это говорит о том, что большая часть потребления памяти приходится на неуправляемые выделения, а не на управляемую кучу .NET.

Снимок экрана из профилировщика:

Изображение
Что я пробовал
  • Использовал инструменты диагностики Visual Studio для мониторинга памяти
  • Проверил управляемое распределение кучи (ничего необычного)
  • Проверено отсутствие явного большого объекта выделения в управляемом коде
  • Попытка принудительного GC (

    Код: Выделить всё

    GC.Collect()
    ), но неуправляемая память не освобождается

Вернуться в «C#»