Mi programa está promocionando la memoria a Gen2 a una velocidad muy alta (aproximadamente 1MB/Sec) y causa un impacto en el rendimiento cuando se produce la recopilación Gen2. Todos los intentos que hice para comprender qué objetos se promovieron fallaron, principalmente debido al hecho de que cuando abrí 2 vuelcos en windbg, la memoria desde la cual se creó el aumento del tamaño Gen2, se marcó como "Libre". Me llevó a sospechar que los objetos fijados están causando el problema, pero las estadísticas perfmon muestran que el número de objetos fijados es muy bajo (alrededor de 2-4)..Net Recolector de basura: consulte qué se promociona a Gen2 durante el Runtime
Lo que estoy pensando en intentar ahora es identificar de alguna manera qué objetos se promueven a Gen2 en tiempo de ejecución. ¿Hay un método para hacer esto?
Sospecho que no dispone de sus objetos desechables. La mayoría de los objetos no expuestos ejecutarán su finalizador y se desharán de allí. Los finalizadores bloquean la recopilación de GC [sección "Cómo afecta la finalización a la recopilación"] (http://msdn.microsoft.com/en-us/library/ms973837.aspx#dotnetgcbasics_topic5). –
¿Está asignando objetos grandes? Los objetos AFAIK asignados en el montón de objetos grandes van al generador 2 de inmediato. – CodesInChaos