Está en la página 1de 3

RAM: Es una memoria de almacenamiento a corto plazo.

El sistema operativo de ordenadores


u otros dispositivos utiliza la memoria RAM para almacenar de forma temporal todos los
programas y sus procesos de ejecución. 

En Java, la "memoria" se refiere al espacio donde se almacenan los datos y las instrucciones
mientras se ejecuta un programa. Java maneja la gestión de memoria de manera automática a
través de un proceso llamado "gestión automática de la memoria". Aquí hay algunos conceptos
clave relacionados con la memoria en Java:

1. **Heap:** La mayoría de los objetos en Java se crean y almacenan en una región de memoria
llamada "heap". El heap es el área donde se asigna dinámicamente la memoria para objetos y
donde se liberará automáticamente cuando ya no sean utilizados.

2. **Stack:** Cada hilo de ejecución en Java tiene su propia pila. La pila se utiliza para almacenar
variables locales, y también para llevar un registro de las llamadas a métodos y sus parámetros.
Las referencias a objetos en el heap también se almacenan en la pila.

3. **Garbage Collection (Recolección de Basura):** Java utiliza un mecanismo de recolección de


basura para eliminar automáticamente los objetos que ya no son accesibles o referenciados por
el programa. Esto ayuda a liberar memoria y evita la pérdida de memoria debido a objetos no
utilizados.

4. **Referencias:** En Java, los objetos se manipulan mediante referencias. Cuando creas un


objeto, en realidad estás creando una referencia de memoria al objeto en el heap. Las referencias
se almacenan en variables y se utilizan para acceder y manipular los objetos reales en el heap.

5. **Memoria PermGen (Dependiendo de la versión de Java):** En versiones más antiguas de


Java, existía una región de memoria llamada "PermGen" (Generación Permanente) que
almacenaba metadatos relacionados con clases y estructuras de datos internas. Sin embargo, en
versiones más recientes de Java, como Java 8 y posteriores, PermGen fue reemplazado por el
espacio de metadatos ("Metaspace").

En resumen, en Java, la memoria se organiza en áreas como el heap y la pila, y la gestión


automática de la memoria, incluida la recolección de basura, garantiza la eficiente asignación y
liberación de recursos, lo que ayuda a prevenir problemas de pérdida de memoria y permite que
los programas sean más seguros y estables.
En Java, los términos "memoria dinámica" y "memoria estática" se refieren a dos formas
diferentes de asignar y administrar memoria para variables y objetos.

- **Memoria Estática:**

- La memoria estática se refiere a la asignación de memoria que se realiza en tiempo de


compilación.

- Las variables estáticas se asignan y se reservan memoria antes de que el programa comience a
ejecutarse.

- Estas variables están vinculadas a la clase en sí, no a instancias individuales de la clase.

- Las variables estáticas son compartidas por todas las instancias de una clase y su valor es el
mismo en todas ellas.

- Se suelen declarar con la palabra clave `static`.

Ejemplo:

```java

class MiClase {

static int contador = 0; // Variable estática

```

- **Memoria Dinámica:**

- La memoria dinámica se refiere a la asignación de memoria que se realiza en tiempo de


ejecución.

- Los objetos creados en tiempo de ejecución se almacenan en la memoria dinámica (heap).

- Java gestiona la memoria dinámica automáticamente a través de la recolección de basura


(garbage collection).

- Cuando creas objetos con `new`, se asigna memoria dinámica para almacenar ese objeto en el
heap.

- Los objetos en la memoria dinámica se liberan automáticamente cuando ya no son accesibles.

Ejemplo:
```java

class Main {

public static void main(String[] args) {

// Crear objeto en memoria dinámica

MiObjeto objeto = new MiObjeto();

```

En resumen, la memoria estática se asigna en tiempo de compilación y está vinculada a la clase,


mientras que la memoria dinámica se asigna en tiempo de ejecución y se utiliza para almacenar
objetos creados durante la ejecución del programa. Java gestiona la memoria dinámica mediante
la recolección de basura, lo que ayuda a prevenir problemas de pérdida de memoria y a mantener
la eficiencia del programa.

También podría gustarte