Todos los objetos consumen recursos del sistema, como memoria, identificadores de archivo y conexiones de bases de datos. Common Language Runtime (CLR) administra los recursos automáticamente, y generalmente no necesita preocuparse de liberar los objetos innecesarios. No obstante, comprender cómo funciona la administración de recursos puede ayudarle a diseñar las aplicaciones más eficazmente.
Recolección de elementos no utilizados
CLR utiliza un sistema denominado recolección de elementos no utilizados para administrar los recursos asignados. La recolección de elementos no utilizados del sistema libera los recursos de un objeto cuando la ejecución de código de la aplicación ya no puede tener acceso al objeto. En las siguientes secciones se describen algunos de los cambios en la forma de administrar los recursos en Visual Basic .NET.
Asignar objetos a Nothing
Nothing es una palabra clave utilizada por Visual Basic .NET para indicar que una variable de objeto no contiene una referencia a un objeto. En versiones anteriores de Microsoft Visual Basic se recomendaba asignar los objetos no utilizados a Nothing para disociar la variable de objeto y liberar recursos. Aún pueden asignarse los objetos no utilizados a Nothing, pero debido a la forma en que Visual Basic .NET administra los recursos, este proceso no garantiza que los objetos queden liberados inmediatamente. En general, sólo deberían asignarse a Nothing objetos que permanecen activos durante mucho tiempo, como miembros compartidos o variables globales.
Dispose
Algunos objetos admiten un método denominado Dispose cuya finalidad consiste en liberar recursos del sistema de forma más expeditiva. Las clases que admiten el método Dispose deben implementar la interfaz IDisposable. Es necesario llamar explícitamente al método Dispose cuando se deseen liberar recursos de objetos. Por ejemplo:
ThisObject.Dispose
Finalize
Otro método que admiten algunas clases, Finalize, se ejecuta automáticamente cuando se libera un objeto y puede utilizarse para realizar otras tareas de limpieza. El método Finalize es similar al método Class_Terminate() que se utilizaba en versiones anteriores de Microsoft Visual Basic. A diferencia del método Dispose, CLR llama automáticamente al método Finalize poco después de que el objeto deja de ser necesario. |