Найдите утечки памяти с помощью WinDbg, когда в Gen2 присутствует много объектов

У меня проблема с памятью в моем .NET-приложении, когда мое приложение начинает потреблять около 1 ГБ в куче Gen2 после того, как все инициализировано и загружено.Со временем (4-5 часов) он постепенно занимает 4 ГБ в куче Gen2. Я использовал WinDbg для анализа вещей, которые я вижу, что некоторые из моих типов объектов (и связанное с ними использование памяти) увеличиваются.

Все объекты, которые растут в экземплярах (и использовании памяти), ссылаются на один и тот же тип родительского объекта. Этот тип родительского объекта имеет около 3900 экземпляров - это никогда не меняется. Каким-то образом я добавляю дочерние объекты к некоторым из этих родительских экземпляров, но у меня нет хорошего способа увидеть, какие из 3900 экземпляров добавляются.

! DumpHeap -mt покажет мне все мои родительские типы, но размеры все те же, потому что он не учитывает потомков.

! ObjSize также будет считать размер дочерних элементов, но будет принимать только один объект за раз в качестве аргумента (или все объекты всех типов - не только мой родительский тип - а это слишком много объектов)

Глядя на дочерние объекты и прослеживая их до родителя, тоже бесполезно, потому что существует пара миллионов таких типов, и я не вижу способа выполнить какую-то агрегированную трассировку.

Такие инструменты, как CLRProfiler и ANTS, слишком сильно замедляют работу моего приложения (в меньшей степени - ANTS), чтобы проблема возникла в разумные сроки.

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

Я много читал об этом и не вижу, чтобы кто-нибудь предлагал, что делать, когда в Gen2 должно быть МНОГО объектов и небольшое количество объектов того же типа, которые продолжают увеличиваться.

Любые советы будут очень благодарны.

7
задан Dave Robinson 10 January 2012 в 18:42
поделиться