Что такое HostCodeHeap и почему они протекают?

У нас есть приложение .NET (на самом деле приложение IronPython). Мы заметили, что со временем приложение становится больше в памяти и тормозит.

Используя WINDBG (! Eeheap -loader), мы заметили, что LoaderHeap становится больше (увеличение на 150 МБ в день). Из вывода! Eeheap видно, что увеличение связано с HostCodeHeap (объектами?).

Я хотел бы знать, что это за объекты и почему я могу предотвратить их рост до бесконечности.

Спасибо!


person Idan Zalzberg    schedule 03.10.2010    source источник


Ответы (1)


Скорее всего, это объекты, созданные для динамически генерируемого кода. Это делают несколько компонентов во фреймворке, и вполне возможно, что IronPython использует некоторые самостоятельно.

Я слышал о подобных проблемах при использовании Linq-TO-SQL, сериализации XML, скомпилированные преобразования XSLT и другой динамически сгенерированный код.

См. Также «Утечка неуправляемой памяти кучи» рядом с рисунком 2 в этой статье журнала MSDN .

person Lucero    schedule 03.10.2010