Веб-приложение имеет очень высокое использование памяти по сравнению с общим количеством.NET в dotMemory
Следующее изображение очень хорошо показывает мою проблему.
У меня есть приложение, которое просто пожирает всю память, которую оно может получить. Снимки на изображениях были сделаны в течение 5-10 минут. В последнем снимке я попытался применить ГБ через dotMemory.
В течение выходных он съел все 60 ГБ памяти, доступной на сервере, IIS перезапустил процесс, а затем все вернулось к приложению, начиная с 1 ГБ, а затем снова увеличивая объем до 60 ГБ.
Общее количество.NET и количество используемых.NET, похоже, продолжают расти, но не так сильно, как общее потребление памяти приложениями.
Глядя на сравнение между снимками, "Система" кажется пространством имен, которое охватывает всю память. Это далеко впереди номер два "Microsoft".
Расширение панели "система" дает мне следующее представление.
Как бы я продолжил анализировать это дальше? Когда я пытаюсь взглянуть на "Ключевые пути удержания", я получаю следующее, что, похоже, не очень помогает мне сейчас.
Я играл с DotMemory раньше, но я никогда не испытывал ничего подобного раньше. Обычно я могу быстро найти некоторые из своих собственных пространств имен и с помощью этого сузить его до того места, где в моем коде я забыл что-то распоряжаться.
Я пытался найти другие вопросы, но ни у одного из них не было той же ситуации, что и у меня. Пожалуйста, не стесняйтесь указывать мне в направлении другого вопроса, если вы знаете один, который я еще не нашел.
0 ответов
Вся память в вашем снимке - Управляемая память. У вас огромная утечка памяти внутри собственного кода вашего приложения. Некоторые объекты Collection или XML хранятся в памяти, а затем сохраняют некоторую собственную память.
В dotTrace вы не можете видеть, кто сохранил вашу родную память (пока). Вы можете сделать это с помощью ANTS Memory Profiler. Или Deleaker для родной части.