.NET FrameworkRecolección de basura


Introducción

En .Net, los objetos creados con new () se asignan en el montón administrado. Estos objetos nunca son finalizados explícitamente por el programa que los usa; en su lugar, este proceso es controlado por el .Net Garbage Collector.

Algunos de los ejemplos a continuación son "casos de laboratorio" para mostrar el recolector de basura en el trabajo y algunos detalles significativos de su comportamiento, mientras que otros se centran en cómo preparar clases para el manejo adecuado por parte del recolector de basura.

Observaciones

El recolector de basura tiene como objetivo reducir el costo del programa en términos de memoria asignada, pero hacerlo tiene un costo en términos de tiempo de procesamiento. Para lograr un buen compromiso general, hay una serie de optimizaciones que deben tenerse en cuenta al programar con el recolector de basura en mente:

  • Si se debe invocar explícitamente el método Collect () (que no debería ser el caso), considere usar el modo "optimizado" que finaliza el objeto muerto solo cuando la memoria es realmente necesaria
  • En lugar de invocar el método Collect (), considere usar los métodos AddMemoryPressure () y RemoveMemoryPressure (), que activan una colección de memoria solo si es realmente necesario
  • No se garantiza que una colección de memoria finalice todos los objetos muertos; en cambio, el recolector de basura gestiona 3 "generaciones", un objeto que a veces "sobrevive" de una generación a la siguiente
  • Es posible que se apliquen varios modelos de subprocesos, dependiendo de varios factores, incluida la configuración del ajuste fino, que resulta en diferentes grados de interferencia entre el subproceso del Recolector de basura y los otros subprocesos de la aplicación

Recolección de basura Ejemplos relacionados