Relación entre la JVM de memoria y Heap Size
Java representa un lenguaje de programación puramente orientado a objetos, lo que significa que Java contiene los beneficios de la programación orientada a objetos, incluida la herencia y el polimorfismo. Para incluir estos beneficios, la JVM debe tener un espacio para almacenar objetos instanciados. Estos objetos no existen en la memoria inmediata de un hilo de una ejecución de código Java. Más bien, el código Java se declara "referencias" a los objetos que almacenan una ubicación en la memoria profunda y de largo plazo.
El Montón y pila
La pila y el apilar representar la diferencia entre la memoria a largo y corto plazo en un programa en ejecución, independientemente del lenguaje orientado a objetos. La pila se refiere a las variables inmediatas y llamadas dentro de un programa en ejecución del método. Esto incluye variables escalares, como enteros y bytes, así como las funciones llamadas. El montón, por otra parte, representa la ubicación donde se almacenan los objetos creados por el programa. Los objetos se asignan dinámicamente en el montón y se quedan allí hasta que ya no se requiere el programa.
JVM Memory
diseñadores desarrollaron el sistema de memoria de la JVM para imitar la sistema orientado a objetos de otros lenguajes como C + +. Cada hilo de ejecución del código de Java en la JVM tiene su propia pila, que representa sus variables escalares locales y llamadas a funciones. Además, la JVM tiene su propio espacio de almacenamiento dinámico. Cuando un programa crea una referencia a un objeto, ese objeto dibuja de memoria del espacio de almacenamiento dinámico colectivo.
El montón de memoria JVM
El espacio de almacenamiento dinámico es sólo una parte de la memoria JVM total, junto con el espacio de pila y otras asignaciones de memoria para las funciones esenciales y el código JVM. Sin embargo, el espacio de almacenamiento dinámico representa una parte crucial de la JVM en que es el vehículo por el cual se crean objetos. Asimismo, la JVM tiene un programa de recolección de basura incorporado para eliminar objetos no utilizados del montón. En lenguajes orientados a objetos más antiguos, los objetos tenían que ser eliminado manualmente, o corrían el riesgo de agotar el espacio de almacenamiento dinámico en lo que se llamó una "pérdida de memoria." Recolector de basura de la JVM, sin embargo, controla el montón y elimina objetos antiguos.