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

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

Сообщение Anonymous »

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

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

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

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

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