Память поколения 2 очищается, как только я получаю снимок. NET с помощью dotMemory - PullRequest
1 голос
/ 14 января 2020

Я устраняю проблему с высоким использованием памяти в веб-приложении. NET, использующем JetBrains dotMemory. Профилировщик утверждает, что использование памяти в поколении 2 очень высоко. Однако когда я нажимаю «Получить снимок», использование памяти мгновенно очищается, и я не могу увидеть содержимое поколения 2 в снимке.

Как отладить память поколения 2?

1 Ответ

1 голос
/ 14 января 2020

Чтобы получить снимок памяти, dotMemory запускает сборку мусора, так работает Microsoft Profiling API. Объекты Gen2 были собраны G C, это означает, что на них не было ссылок, и они просто ждали G C (2), что случается реже, чем G C (0). Это означает, что у вас нет проблем с высоким использованием памяти. CLR имеет значение, когда запускать G C для освобождения памяти, если этого не происходит, значит, памяти достаточно.

Если вам все еще нужно увидеть, что это за объекты, вы можете использовать Memory Traffi c Просмотр для просмотра объектов, выделенных и собранных в диапазоне между двумя снимками. Или Сравнительное представление снимков , чтобы увидеть, какие объекты, представленные в одном снимке, умерли при получении другого.

...