Repaso
English
Java CoreIntermedioJV-22

¿Dónde viven los objetos en la JVM y qué vive en el stack?

Opciones

  1. Los objetos en el stack; los primitivos locales en el heap
  2. Los objetos en el heap; el stack de cada thread guarda variables locales y llamadas (Opción correcta)
  3. Todo vive en el heap, incluidas las llamadas a métodos
  4. Todo vive en el stack, incluidos todos los objetos

Respuesta

Los objetos en el heap; el stack de cada thread guarda las variables locales y las llamadas a métodos

Por qué

El heap es la gran zona de memoria compartida donde se crean todos los objetos (new). El garbage collector la limpia.

Cada thread tiene su propio stack: una zona pequeña donde cada llamada a un método recibe un frame con sus variables locales (primitivos y referencias a objetos). Cuando el método termina, el frame se elimina automáticamente.

Un StackOverflowError significa demasiadas llamadas anidadas (normalmente recursión infinita); OutOfMemoryError significa que el heap está lleno.

Recuerda

Heap = objetos (compartido). Stack = frames de métodos (por thread).

Términos clave

Practica esta pregunta en Repaso