Compartir a través de


Tareas del programador en la administración de la memoria

Su experiencia con la administración de memoria variará en función de su experiencia como programador. En determinadas situaciones, deberá adaptar sus hábitos de programación a la administración automática de la memoria que proporciona Common Language Runtime.

Programadores de COM

Los programadores de COM están acostumbrados a implementar recuentos de referencias como una técnica de administración de memoria manual. Cada vez que se hace referencia a un objeto, se incrementa un contador. Cuando una referencia a un objeto queda fuera de ámbito, se disminuye un contador. Cuando el contador de referencias a un objeto llega a cero, el objeto se termina y su memoria se libera.

El esquema de recuento de referencias es el origen de muchos errores. Si las reglas de recuento de referencias no se siguen con precisión, es posible que los objetos se liberen prematuramente o que se acumulen objetos sin referencias en la memoria. Las referencias circulares también son una fuente habitual de errores. Una referencia circular ocurre cuando un objeto secundario hace referencia a un objeto principal, y el objeto principal tiene una referencia al objeto secundario. En este caso, ninguno de los objetos se puede liberar ni destruir. La única solución es que se acuerde un modelo fijo de utilización y destrucción de los objetos principal y secundario, por ejemplo, que el principal siempre elimine primero al secundario.

Cuando se programan aplicaciones en un lenguaje que está orientado a Common Language Runtime, el recolector de elementos no utilizados del motor de tiempo ejecución elimina la necesidad del recuento de referencias, y por consiguiente, los errores que puedan surgir de este esquema de administración manual de la memoria.

Programadores de C++

Los programadores de C++ están acostumbrados a las tareas relacionadas con la administración manual de la memoria. En C++, cuando se asigna memoria a un objeto mediante el operador new, es necesario liberar la memoria del objeto utilizando el operador delete. Esto puede producir errores, como olvidar liberar un objeto y causar una pérdida de memoria, o intentar tener acceso a la memoria de un objeto que ya se ha liberado.

Al desarrollar aplicaciones con Visual C++, u otro lenguaje orientado a Common Language Runtime, no tiene que usar el operador delete para liberar objetos. El recolector de elementos no utilizados lo hace automáticamente cuando la aplicación ya no utiliza el objeto.

Es posible que los programadores de C++ estén acostumbrados a utilizar objetos de corto plazo debido al costo asociado de administrar manualmente la memoria de estos objetos. Para los objetos de corto plazo que se crean y quedan fuera de ámbito entre una recolección y otra, el costo de asignar y liberar la memoria es extremadamente bajo. En .NET Framework, el recolector de elementos no utilizados está optimizado para administrar objetos con períodos de vida cortos. Cuando se programan aplicaciones administradas, es apropiado utilizar objetos de corto plazo cuando simplifiquen el código.

Programadores de Visual Basic

Los programadores de Visual Basic suelen estar acostumbrados a la administración automática de la memoria. Los hábitos de programación a los que está acostumbrado se aplican a la mayoría de los objetos administrados que se crean en .NET Framework. No obstante, debe prestar especial atención del patrón de diseño del método Dispose que debe utilizar al crear o utilizar objetos que encapsulan recursos no administrados.

.NET Framework es compatible con más lenguajes orientados a Common Language Runtime que los mencionados aquí. Independientemente del lenguaje administrado que utilice, el recolector de elementos no utilizados permite administrar la memoria automáticamente. Asigna y libera la memoria de los objetos administrados y, cuando es necesario, ejecuta los destructores y métodos Finalize para limpiar correctamente los recursos no administrados. La administración automática de la memoria simplifica la programación ya que elimina los errores que surgen habitualmente en los esquemas de administración manual de la memoria.

Vea también

Conceptos

Métodos de finalización y destructores

Otros recursos

Recolección de elementos no utilizados