Я пытаюсь отследить причину OutOfMemory для веб-сайта. На этом сайте ~ 12 000 .aspx страниц, и в последний раз, когда он падал, я записал дамп памяти с помощью adplus.
После некоторого исследования я обнаружил много фрагментов кучи, около 100 МБ свободных блоков, которые нельзя назначить. Копание вглубь кучи больших объектов фрагментировано, и причины, по-видимому, заключаются в интернировании строк, как описано [здесь] [1]
Может ли это быть вызвано количеством страниц на сайте? Поскольку все они скомпилированы, они остаются в памяти и, глядя на дамп, они интернированы и закреплены, что, я думаю, означает, что они некоторое время остаются там.
Я нахожу это странным, так как есть много сайтов с большим количеством страниц, но динамическая компиляция может объяснить рост памяти.
Какие существуют другие способы обнаружения причины утечки памяти? Я попытался перехватить дамп с помощью adplus в режиме зависания, но это не удалось, и рабочий процесс IIS был переработан.
[1]: • Фрагментация кучи больших объектов