‫Volveremos y este tú.
‫Me gustaría hablar sobre la recolectora de basura y cómo cuida la memoria.
‫Entonces, la recolección de basura es una herramienta que está disponible y en múltiples lenguajes de programación.
‫Y en algunos de ellos, se hace manualmente.
‫En otros, se hace de forma automática.
‫Y el marco dot net proporciona una gestión automática de la memoria, lo que significa que no tiene
‫que usar el recolector de basura manualmente como lo hace en todos los lenguajes de programación.
‫Entonces, los lenguajes de programación como C o C ++ y otros, tienen una recolección de basura manual que tienes que ejecutar de
‫vez en cuando y tienes que saber cuándo tienes que ejecutarla.
‫Entonces eso es algo que se hace automáticamente.
‫Intershop es por eso que no es algo así.
‫Sí, mucha gente lo usa con mucha frecuencia.
‫Entonces, una vez que tenga programas más complejos y realmente avanzados, comenzará a usarlos de vez en cuando.
‫Pero en realidad, no es algo que tenga que usar todo el tiempo o que tenga que usar en la mayoría de
‫los casos.
‫Por eso no es un tema importante, por así decirlo.
‫Está bien.
‫Entonces digamos que tenemos este objeto llamado Dennis y es de tipo humano.
‫Entonces creé una clase que se llama humano, y hay múltiples propiedades diferentes y así sucesivamente.
‫Entonces, al final, solo estoy creando un objeto de tipo humano.
‫Y ese se llama Dennis.
‫Y al hacerlo, al usar esta nueva palabra clave, necesito memoria porque crea un objeto en mi memoria.
‫Así que nos asigna memoria.
‫Y el marco se encarga de recuperar la memoria para su uso en el sistema una vez que los objetos ya no se
‫utilizan.
‫Entonces, en este caso, estoy creando este objeto y luego podría usarlo y podría usarlo una y otra vez.
‫Pero en un momento dado no lo voy a usar más y tal vez incluso estoy cortando las referencias.
‫Y luego, sí, el recolector de basura lo limpiará porque esta memoria ahora está bloqueada y el recolector de
‫basura tiene que limpiar.
‫Por lo tanto, tiene que hacer que esta memoria esté disponible nuevamente para otros objetos, por ejemplo.
‫Ahora, veámoslo desde una perspectiva visual, por lo que tenemos este grupo de memoria del sistema en el lado
‫izquierdo y nuestro programa en el lado derecho y el grupo de memoria del sistema tiene un montón de memoria.
‫Entonces podemos usar esta memoria para múltiples programas diferentes.
‫Pero ahora tenemos nuestro programa que lo ejecuta.
‫Ahora en nuestro programa, creamos un objeto.
‫Ahora, de repente, necesitamos un poco de espacio en nuestra memoria.
‫Está bien.
‫Entonces, hay una referencia de nuestro programa a esa memoria donde se almacena nuestro objeto.
‫Está bien.
‫Entonces, hay una referencia directa y podemos reutilizarlo y podemos llamarlo desde diferentes lugares y así sucesivamente.
‫Está bien.
‫Y luego tenemos otro y otro.
‫Entonces tenemos varios objetos diferentes que creamos y cada vez crearemos el nuevo objeto.
‫Hay una memoria asignada en el grupo de memoria y hay una referencia de nuestro programa a esa memoria.
‫Entonces estas referencias están ahí.
‫Entonces, hay una referencia de nuestro programa al grupo de memoria.
‫Ahora, en un momento dado, la referencia podría eliminarse.
‫Entonces, tal vez eliminemos la referencia configurando una variable ahora o configurando el objeto como nulo y luego la referencia
‫a desaparecido repentinamente.
‫Ahora, nuestro programa ya no hace referencia a esta pequeña ubicación de memoria aquí.
‫Entonces nuestro recolector de basura lo nota y dice, OK, no hay referencia.
‫Así que este pedacito de memoria nunca se usa.
‫Así que limpiémoslo o veamos, ubiqué o liberémoslo para otra ubicación y eso es lo que sucede
‫entonces.
‫Así que ahora echemos un vistazo a un ejemplo de cuándo se activará el recolector de basura, y tengo una función
‫aquí llamada mi función y estoy creando un objeto aquí.
‫Nuevamente, se llama Dennis.
‫Y luego Dennis llama a sus métodos o nosotros llamamos a su método, como enseñar.
‫Luego establecemos su edad y luego llamamos a otro método, envejecemos y así sucesivamente.
‫Pero en un momento, este objeto dunnies en la memoria ya no es necesario porque la llamada a la función ha
‫terminado.
‫Entonces termina la función, el objeto.
‫Dennis sale del alcance y ya no hay referencias a Dennis porque mi función es una función y
‫tenemos este objeto que está dentro de una función.
‫Entonces el alcance de la misma está dentro de la función.
‫Entonces, una vez que finaliza la llamada a la función, ya no hay referencia directa a ella porque no podemos hacer referencia a
‫un objeto que está dentro de una función desde fuera de esta función.
‫Derecha.
‫Entonces necesitaríamos crear campos para eso o hacer otros enfoques para esto.
‫Pero al final, el recolector de basura, que se encarga de limpiar esto, entonces es y reasigna esta memoria.
‫Y la idea general aquí es realmente que este es solo un ejemplo simple.
‫Hay muchas otras situaciones en las que el recolector de basura se activará, pero esto es algo
‫que ya hemos usado.
‫Entonces, los conceptos que pueden ver aquí, ya los hemos visto en otros videos o conferencias de este
‫curso.
‫Por eso elegí este ejemplo.
‫Entonces, ¿qué necesitas saber sobre la recolección de basura?
‫Bueno, no tiene que llamar al recolector de basura manualmente, pero puede hacerlo de forma manual.
‫El recolector de basura requiere potencia de procesamiento.
‫Por lo que está en un hilo separado y es muy liviano.
‫Pero aún así, se requiere algo de potencia de procesamiento.
‫El objetivo de los recolectores de basura es liberar memoria, pero no usar demasiada potencia de procesamiento.
‫Por lo tanto, no necesitará mucha potencia de procesamiento en general, pero no se llamará todo el tiempo o el
‫recolector de basura no se ejecutará todo el tiempo para liberar memoria.
‫Simplemente se ejecutará cuando sea necesario o cuando considere que las cosas necesarias son necesarias.
‫Así que esa es realmente la parte complicada aquí.
‫La memoria no necesariamente se recupera de inmediato.
‫El recolector de basura puede tardar un poco, incluso si lo llama manualmente, no tiene que ejecutarse
‫de inmediato.
‫Así que estas son algunas cosas complicadas sobre el recolector de basura que puede implementar para finalizar un método para
‫ejecutar código justo antes de que el recolector de basura libere un objeto de la memoria.
‫Esto significa que si decide ejecutar un código específico justo antes de que se limpie un objeto, entonces justo antes de que el recolector de
‫basura lo esté limpiando.
‫Entonces, una vez que ya no haya referencias a él, por ejemplo, puede usar el método lizer final dentro
‫de esta clase para implementar la funcionalidad específica que desea que se ejecuten.
‫Tal vez desee limpiar las cosas usted mismo justo antes de que el recolector de basura entre y
‫limpie su objeto o lo reubique en la memoria o lo libere de la memoria.
‫Está bien.
‫¿Cuándo funciona el recolector de basura?
‫Bueno, cuando el sistema tiene poca memoria física, cuando la memoria asignada excede el umbral preestablecido,
‫cuando se llama a los recolectores de basura o al método de recolección, aunque este es un método muy
‫complicado.
‫Entonces esto es algo que es.
‫Sí, muy específico.
‫Muy especial.
‫Si desea saber más al respecto, debe consultar la documentación sobre el recolector de basura.
‫Pero el método de recopilación no siempre se llama de inmediato y no limpia todo directamente.
‫Es más como si le estuvieras dando una sugerencia a la herramienta.
‫Entonces estás diciendo, está bien, recolector de basura.
‫Personalmente creo que ese sería un buen punto o un buen lugar para recolectar la basura, pero en algunos casos puede que
‫no lo acepte o simplemente lo haga más tarde o algo así.
‫Tal vez solo hizo recolección de basura y decide que no es necesario o algo así.
‫Así que es muy complicado.
‫Si quieres saber más al respecto, consulta la documentación.
‫Pero creo que este es un buen punto de partida para comprender lo que hace el recolector de basura.
‫Y como dije, en la mayoría de los casos, no lo necesitará porque hoy en día tenemos mucha memoria y si no
‫tiene grandes pérdidas de memoria en sus programas, nunca debería tener estos problemas.