PROGRAMACIÓN C#
objeto vecC queda aislada, es decir que se pierde toda referencia a ella. En un len
guaje como C++ esto generaría un mcmory leak, y dicha zona de memoria quedaría reservada hasta que finalmente el programa terminara y el sistema operativo recu perara toda la memoria que estaba usando. En cambio, C#, gracias a su recolector de basura, advertirá esta situación y recupe rará dicha memoria para dejarla nuevamente disponible a nuestro programa. Pero ¿cuando ocurrirá estol En el lenguaje de programación C# no existe el operador contrario a new (como sí existe en C++, donde dicho operador se denomina delete). La destrucción de un ob jeto no es un proceso determinístico, es decir que no podremos controlar exacta
mente el momento en el cual la memoria asignada en el hcap vuelve a ser memoria disponible para ser utilizada en otros objetos. Lo que sí podemos indicarle al sistema es cuándo un objeto deja de sernos útil. Pa ra esto bastará con pisar la referencia que teníamos de un objeto por el valor nuil: // Construimos el objeto Vector2 vecA = new Vector2(); // Hacemos uso del objeto //
...
/ / L e indicamos al sistema que ya no lo precisamos vecA e nuil;
A partir de ese momento, cuando el recolector de basura advierta esta situación, to mará cartas en el asunto. Pero el instante preciso en el que lo hará realmente queda fuera de nuestro alcance. El recolector de basura se asegura de que:
USO DE LA MEMORIA POR PARTE DE OBJETOS Cada objeto instanciado ocupará un tugar en memoria, esto ya lo dijimos. Sin embargo, cabe des tacar que un objeto no poseerá todos los datos en su porción de memoria: las constantes y las variables estáticas, por ejemplo, estarán ubicadas en un lugar único, relacionadas con su clase. Nótese que un objeto del tipo Foo poseerá una variable a totalmente independiente de las demás.
106
u s r .c o d e