Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Para reclamar objetos, el recolector de elementos no utilizados (GC) debe detener todos los subprocesos en ejecución en una aplicación. El período de tiempo durante el que está activo el recolector de elementos no utilizados se conoce como su latencia.
En algunos casos, como cuando una aplicación recupera datos o muestra contenido, la recolección completa de elementos no utilizados puede producirse en un momento crítico y reducir el rendimiento. Puede ajustar la tendencia a la intrusión del recolector de elementos no utilizados estableciendo la propiedad GCSettings.LatencyMode en uno de los valores de System.Runtime.GCLatencyMode.
El uso de una configuración de latencia "baja" significa que el recolector de elementos no utilizados interfiere menos en la aplicación. La recolección de elementos no utilizados es más conservadora sobre la recuperación de memoria.
La enumeración System.Runtime.GCLatencyMode proporciona dos opciones de configuración de latencia baja:
GCLatencyMode.LowLatency suprime las recolecciones de generación 2 y realiza solo las recolecciones de generación 0 y 1. Se puede usar solo durante breves períodos de tiempo. En períodos más largos, si la memoria del sistema está bajo presión, el recolector de elementos no utilizados activará una colección que puede pausar brevemente la aplicación e interrumpir una operación crítica en el tiempo. Esta opción está disponible solo para la recopilación de elementos no utilizados de estación de trabajo.
GCLatencyMode.SustainedLowLatency suprime las recolecciones de generación 2 de primer plano y realiza solo las recolecciones de generación 0, 1 y las recolecciones de generación 2 de segundo plano. Se puede usar durante periodos más largos de tiempo y está disponible para la recolección de elementos utilizados de estación de trabajo y de servidor. Esta opción de configuración no se puede usar si la recolección de elementos no utilizados en segundo plano está deshabilitada.
Durante los períodos de latencia baja, se suprimen las recolecciones de generación 2 a menos que ocurra lo siguiente:
El sistema recibe una notificación de memoria insuficiente desde el sistema operativo.
El código de aplicación induce una recolección mediante una llamada al método GC.Collect y especifica 2 en el parámetro generation
.
En la tabla siguiente se enumeran los escenarios de aplicación en los que se usan los valores de GCLatencyMode:
Modo de latencia | Escenarios de aplicación |
---|---|
Batch | Para las aplicaciones que no tienen interfaz de usuario (UI) u operaciones de servidor. Cuando se deshabilita la recolección de elementos no utilizados en segundo plano, este es el modo predeterminado para la recolección de elementos no utilizados de estación de trabajo y de servidor. El modo Batch también invalida el valor gcConcurrent, es decir, impide las recolecciones simultáneas o en segundo plano. |
Interactive | Para la mayoría de las aplicaciones que tienen una interfaz de usuario. Este es el modo predeterminado para la recolección de elementos no utilizados de estación de trabajo y de servidor. Sin embargo, si se hospeda una aplicación, la configuración del recolector de elementos no utilizados del proceso de hospedaje tiene prioridad. |
LowLatency | Para aplicaciones que tienen operaciones a corto plazo sujetas a limitación temporal durante las cuales las interrupciones del recolector de elementos no utilizados podrían ser perjudiciales. Por ejemplo, las aplicaciones que realizan funciones de adquisición de datos o representación de animación. |
SustainedLowLatency | Para aplicaciones que tienen operaciones sujetas a limitación temporal con una duración limitada pero posiblemente larga durante las cuales las interrupciones del recolector de elementos no utilizados podrían ser perjudiciales. Por ejemplo, las aplicaciones que necesitan tiempos de respuesta rápidos, como los cambios de los datos del mercado durante las horas de comercio. Este modo produce montón administrado de mayor tamaño que otros modos. Como no compacta el montón administrado, es posible una fragmentación mayor. Asegúrese de que hay suficiente memoria disponible. |
Cuando use el modo GCLatencyMode.LowLatency, tenga en cuenta las siguientes instrucciones:
Haga que el período de tiempo de latencia baja sea lo más corto posible.
Evite asignar gran cantidad de memoria durante los períodos de latencia baja. Se pueden producir notificaciones de memoria insuficiente porque la recolección de elementos no utilizados reclama menos objetos.
Mientras esté en modo de latencia baja, minimice el número de asignaciones nuevas, en particular las asignaciones en el montón de objetos grandes y de objetos anclados.
Tenga en cuenta los subprocesos que podrían estar realizando asignaciones. Como el valor de la propiedad LatencyMode se aplica a todo el proceso, se pueden generar excepciones OutOfMemoryException en cualquier subproceso que esté realizando asignaciones.
Ajuste el código de latencia baja en regiones de ejecución restringidas. Para obtener más información, vea Regiones de ejecución restringidas.
Para forzar las recolecciones de generación 2 durante un período de latencia baja, llame al método GC.Collect(Int32, GCCollectionMode).
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraCursos
Ruta de aprendizaje
Ejecución de aplicaciones de informática de alto rendimiento (HPC) en Azure - Training
Azure HPC es una capacidad en la nube creada a propósito para la carga de trabajo de IA y de HPC, mediante procesadores de vanguardia e interconexión InfiniBand de clase HPC, con el fin de ofrecer el mejor rendimiento, escalabilidad y valor de la aplicación. Azure HPC permite a los usuarios desbloquear la innovación, la productividad y la agilidad empresarial, mediante una gama de tecnologías de inteligencia artificial y de HPC de alta disponibilidad que se pueden asignar dinámicamente a medida que cambian
Documentación
Notificaciones de recolección de elementos no utilizados - .NET
Más información sobre: Notificaciones de recolección de elementos no utilizados
Supervisión de recursos de dominio de aplicación - .NET
Más información sobre la supervisión de recursos de dominio de aplicación
Recolección de elementos no utilizados en segundo plano - .NET
Obtenga información sobre la recolección de elementos no utilizados en .NET y cuáles son las diferencias en la recolección de elementos no utilizados de estación de trabajo y de servidor.