#. Hay dos tipos de memoria en Java. Se llaman pila y montón respectivamente.
La pila es el espacio de memoria del programa, por lo que todos los tipos básicos y referencias de objetos se almacenan en la pila.
El montón es donde la máquina virtual Java almacena objetos. Es una memoria enorme. Cuando crea un objeto, la máquina virtual Java coloca el objeto en el montón y la dirección del objeto creado en la pila.
Por lo tanto, las referencias a tipos y objetos básicos se almacenan en la pila; los objetos se almacenan en el montón.
#. Mecanismo de recolección de basura en Java.
Cuando crea un nuevo objeto, Java asigna la memoria necesaria. Cuando terminas de usar un objeto, el recolector de basura de Java recupera la memoria por ti.
La recolección de basura se ejecuta en segundo plano en forma de subprocesos, buscando objetos que no tienen referencias útiles. Una vez encontrados, los objetos se destruyen y se recupera la memoria.
La recolección de basura se implementa entre máquinas virtuales Java. Por lo general, tienen los mismos pasos. Primero, el recolector de basura obtiene una instantánea de los subprocesos en ejecución y todas las clases cargadas.
Luego, todos los objetos involucrados en el hilo se marcan como usados recientemente. Cuando se marcan todos los objetos que pueden estar involucrados, los restantes sin marcar se descartan.
Para ayudar a la máquina virtual, es una buena práctica eliminar proactivamente algunos objetos que ya no son necesarios. Esto se puede lograr estableciendo la referencia en nulo.
p.ej.:
Texto t = nueva prueba();
t.algunaAcción();
//todo hecho
t = nulo;