Что могло объяснить более чем 5 000 000 Систем. Экземпляры WeakReference на управляемой "куче"?

Я выполнял нагрузочные тесты против производства веб-приложение ASP.NET, и вижу огромное количество Системы. WeakReferences создается на "куче". В течение приблизительно 15 минут под управляемой "кучей" загрузки память стреляла приблизительно до 3 ГБ, и у меня есть приблизительно 5 000 000 ссылок на Систему. WeakReference. Выполнение принудительной сборки "мусора" всех поколений не выпускает эти ссылки.

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

Я использовал WinDbg для отладки процесса, вот заключительные немного строк !dumpheap -stat

000007fef788e0c0    39253     18510000 System.Collections.Hashtable+bucket[]

00000000021bf120    94336    151023192      Free

000007fef7887e98     5959    189838752 System.Char[]

000007fef7874390   517429    589750224 System.Object[]

000007fef78865a0  1531190   1230824112 System.String

000007fef787dab8 51723338   1655146816 System.WeakReference

Поскольку Вы видите, что приблизительно 1.5 ГБ памяти были использованы ими Система. WeakReferences.

У кого-либо есть какая-либо идея, что могло создавать все эти WeakReferences?

5
задан Michael Petrotta 27 February 2010 в 00:03
поделиться

1 ответ

Получается, что у меня была утечка System.WeakReference из-за динамического создания большого количества экземпляров System.Diagnostics.TraceSwitch, внутри TraceSource / TraceSwitch выделяет WeakReference новому TraceSource / TraceSwitch и помещает WeakReference в список. Хотя WeakReference позволяет TraceSource / TraceSwitch собирать мусор, сам WeakReference никогда не будет освобожден, что приведет к утечке памяти.

Дополнительную информацию можно найти здесь

http://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource (VS.80) .aspx

4
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: