Asignación de memoria en Java: todo lo que necesita saber en 2022
Publicado: 2021-01-10La asignación de memoria en Java se refiere al proceso en el que los programas y servicios de la computadora se asignan dedicados a espacios de memoria virtual. La máquina virtual de Java divide la memoria en pila y memoria en montón. Para Java Virtual Machine, la ejecución de una aplicación en su máximo potencial puede ocurrir desde la pila y la memoria del montón. Cada vez que se declara una nueva variable u objeto, la memoria asigna memoria dedicada a tales operaciones.
Tabla de contenido
memoria de pila
La asignación de Stock Memory en Java se utiliza para memoria estática y ejecución de subprocesos. Los valores contenidos en esta memoria son temporales y están limitados a métodos específicos, ya que siguen siendo referenciados en el modo Último en entrar, primero en salir.
Tan pronto como se llama a la memoria y se crea un nuevo bloque en la memoria de la pila, la memoria de la pila retiene valores primitivos y referencias hasta que el método dura. Después de su finalización, el bloque se vacía y está disponible para que tenga lugar un nuevo proceso. En general, el tamaño total de la memoria de pila es insignificante al de la memoria de montón.
Aprenda a crear aplicaciones como Swiggy, Quora, IMDB y másCaracterísticas de la memoria de pila
Según las diferentes secciones de la asignación de memoria en Java Virtual Machine (JVM) , estas son algunas de las características discretas de la memoria de pila:
- La memoria de la pila puede crecer o contraerse a medida que se llama a cualquier método nuevo y se devuelve en consecuencia.
- Cualquier variable en la pila puede ejecutarse siempre que exista el alcance del método.
- Obtiene asignación y desasignación automáticas a medida que se ejecuta un método.
- En el caso de memoria llena, se activa java.lang.StackOverFlowError.
- Tiene un acceso más rápido en comparación con la memoria del montón.
Leer: Full-Stack vs. Ingeniero de software: ¿Cuál debería elegir?
Métodos utilizados en la asignación de memoria de pila en Java
- Empuje de objeto (elemento de objeto): aquí, un elemento se empuja a la parte superior de la pila.
- Object pop (): cualquier elemento ubicado en la parte superior de la pila se vacía y se devuelve. En caso de que una pila esté vacante cuando se invoca pop(), se produce la excepción: EmptyStackException.
- Vistazo de objeto (): aquí, el elemento superior se devuelve pero no se vacía.
- Booleano vacío (): si el ciclo no tiene ningún valor superior en su pila, la función devuelve 1 (verdadero), de lo contrario, 0 (falso).
- En búsqueda (elemento de objeto): esto se usa para comprender si un objeto está presente en la pila. En caso de que se encuentre el valor, la función devuelve la ubicación del elemento desde la parte superior de la pila; de lo contrario, devuelve -1.
Leer: Proyectos y temas de Java para principiantes

Espacio de almacenamiento dinámico de Java
Utilizado principalmente por el tiempo de ejecución de Java, Java Heap Space entra en juego cada vez que se crea y asigna un objeto en él. La función discreta, como Garbage Collection, sigue vaciando la memoria utilizada por los objetos anteriores que no tienen referencia. Para un objeto creado en Heap Space puede tener acceso gratuito a través de la aplicación.
La asignación de memoria en Java se divide en partes, a saber, Montón, Pila, Código y Estático.
Características de la memoria del montón de Java
- Accesible desde la complicada técnica de gestión de memoria, incluida la generación joven, la generación antigua o permanente y la generación permanente.
- En la memoria del montón, cuando se llena, devuelve java.lang.OutOfMemoryError.
- El acceso en esta memoria es comparativamente más lento que el de la memoria de pila.
- No se somete a desasignación automática y requiere una función similar como Garbage Collector para eliminar objetos extraños para que la memoria funcione en su etapa óptima.
Un ejemplo de la asignación de memoria de pila y montón en Java es:


Fuente
Espacio de pila y memoria de pila: diferencias fundamentales
Memoria de espacio de montón | memoria de pila |
Todas las partes de la aplicación invocan la memoria del montón. | La ejecución de la memoria de pila está limitada a un solo hilo. |
Cada vez que se crea un objeto, se almacena en el espacio de almacenamiento dinámico. | La memoria de pila solo comprende su referencia y variables primitivas locales. |
Los objetos aquí son accesibles globalmente a través de la aplicación. | Otros subprocesos no pueden acceder a los objetos de memoria de pila. |
Aquí, la memoria se define según las generaciones jóvenes y viejas. | La gestión de la memoria se produce sobre la base del último en entrar, el primero en salir. |
La memoria permanece según el alcance de la aplicación. | La memoria es temporal. |
Los métodos como: XMX y XMS JVM se utilizan para definir el tamaño óptimo de la memoria del montón. | Para la memoria de pila, se determina mediante el método -XSS. |
Aquí, la excepción de java.lang.OutOfMemoryError ocurre en el caso de memoria llena. | Aquí, el error java.lang.StackOverFlowError ocurre en caso de que la memoria esté llena. |
El tamaño es mayor, pero lleva tiempo procesarlo en comparación con la memoria de pila. | El tamaño es menor pero más rápido en ejecución por su suave operación LIFO. |
Lea también: Salario de desarrollador de Java en India
Aprenda cursos de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Conclusión
La asignación de memoria en Java ocurre de dos maneras, principalmente, espacio de pila y montón. Esperamos haberte ayudado a entender el proceso de todo esto.
Si está interesado en obtener más información sobre el desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos, y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.
¿Cómo ocurre la gestión de memoria en Java?
Java Virtual Machine (JVM) es un programa informático utilizado para ejecutar programas escritos en el lenguaje de programación Java. Hace que el proceso de uso de la gestión de memoria sea eficiente. Además, está diseñado para ser robusto, de modo que incluso si hay un bloqueo en el sistema operativo, el programa que se ejecuta en la JVM no se ve afectado. La administración de memoria significa administrar cada pieza de memoria (RAM) en un sistema informático. JVM supervisa la asignación y liberación de memoria cuando es necesario. Tan pronto como se carga un programa en la memoria, la JVM le asigna espacio de memoria. Este proceso se llama montón. El montón es un espacio de memoria común para muchas partes de la aplicación.
¿Qué es la recolección de basura en Java?
La máquina virtual de Java (JVM) utiliza el recuento de referencias para realizar un seguimiento del número de objetos de Java. Antes de que se pueda recopilar cualquier objeto, el número de referencias a este objeto debe llegar a cero. El programa de usuario puede borrar objetos explícitamente llamando al método finalize(). Finalize es un método estático en la clase Object que llama Garbage Collector (GC). El método Finalize liberará todos los recursos del objeto antes de que Garbage Collector se encargue de este objeto. Garbage Collector es el proceso de limpieza de objetos no deseados. El proceso de Garbage Collector se activará cuando el sistema de tiempo de ejecución de Java detecte que el montón de Java está casi lleno. Cada objeto tiene un mapa de bits en JVM. El mapa de bits se establece para cada objeto para realizar un seguimiento de si se ha utilizado o no. Cuando el mapa de bits se cambia a 0, GC se encargará de este objeto.
¿Cuáles son las características del lenguaje de programación Java?
El lenguaje de programación Java es un lenguaje de programación de alto nivel y propósito general que se utiliza para crear aplicaciones y subprogramas. El software de Java puede ejecutarse en cualquier plataforma que admita Java sin necesidad de reprogramarlo. Las características del lenguaje de programación Java son: características orientadas a objetos, robusta, de alta seguridad e independiente de la plataforma, sin costo, fácil de aprender y usar. Java es un lenguaje de programación orientado a objetos que es independiente de la plataforma y también se puede usar en cualquier sistema operativo o plataforma. Java es un lenguaje compilado y se produce un código de bytes que luego se ejecuta en la máquina virtual de Java.