Recolección de elementos no utilizados (C# y Java)

Actualización: noviembre 2007

En C y C++, es necesario que el programador asigne los recursos de varios objetos una vez declarados, antes de que los objetos se puedan utilizar de forma segura. También es responsabilidad del programador volver a liberar estos recursos para el bloque de espacio en memoria una vez utilizado el objeto. Si no se liberan los recursos, se dice que el código tiene pérdida de memoria, porque cada vez más recursos se utilizan inútilmente. Por otra parte, si los recursos se liberan de forma prematura, se puede producir pérdida de datos, daños en otras áreas de memoria y excepciones de puntero nulo.

Java y C# evitan estos peligros al administrar independientemente el período de duración de todos los objetos que una aplicación utiliza.

En Java, JVM se asegura de liberar la memoria no utilizada mediante el seguimiento de las referencias a los recursos asignados. Cada vez que JVM detecta que una referencia válida ya no hace referencia a un recurso, se recolectan los elementos no utilizados del recurso.

En C#, Common Language Runtime (CLR) controla la recolección de elementos no utilizados con una funcionalidad similar a la de JVM. El recolector de elementos no utilizados de CLR busca periódicamente en el montón de memoria cualquier objeto sin referencia y libera los recursos contenidos por estos objetos.

Vea también

Conceptos

Guía de programación de C#

Administración de memoria automática

Otros recursos

Ejemplos de código de C# para desarrolladores de Java