Я вижу некоторые необычные шаблоны сборки мусора в .net 4.0, которые я не могу объяснить, любой совет будет оценен.
В разное время при запуске моей программы счетчик сбора G2 начинает увеличиваться, и время GC% приближается к 100%.Это продолжается некоторое время перед остановкой (см. Снимок экрана системного монитора ниже).В течение этого времени трассировка PerfView событий CLR GC ETW показывает, что ряд долго работающих коллекций G2 запускаются вплотную по причине «AllocSmall».
Может ли кто-нибудь пролить свет на:
- Преимущественно, что вызывает событие 'AllocSmall'
- Почему это непосредственно вызывает сбор G2
- Почемуэти коллекции G2 происходят вплотную
LowMemory, по-видимому, не является проблемой, так как события запуска GC не несут это в качестве своего кода причины (http://msdn.microsoft.com/en-us/library/ff356162.aspx). Мы также видели похожиеситуации, в которых коллекции G0 происходят вплотную.
Редактировать: Было высказано предположение, что триггером может быть превышен некоторый порог. Учитывая, что память все еще доступна, я ожидаю, что куча G2разверните на этом этапе, а не пытайтесь собрать сборщик мусора.
Редактировать: Изображения, размещенные ниже, имеют гораздо более высокое разрешение, чем показы StackOverflow - просто откройте ссылку на изображение непосредственно на вкладке браузера..