Sobes.tech
Junior

Cos'è heap e stack?

sobes.tech AI

Risposta dell'AI

Heap e Stack sono due aree di memoria utilizzate dai programmi per memorizzare i dati.

  • Stack (pila) è un'area di memoria in cui vengono memorizzate variabili locali, parametri di funzioni e indirizzi di ritorno. Funziona secondo il principio LIFO (last in, first out). Quando viene chiamata una funzione, viene allocato un blocco nello stack, e dopo il suo completamento, viene liberato. Lo stack ha una dimensione limitata ed è gestito automaticamente.

  • Heap (montone) è un'area di memoria per l'allocazione dinamica di oggetti e dati, la cui dimensione può cambiare durante l'esecuzione del programma. In Java, gli oggetti vengono creati nel montone, e il garbage collector libera automaticamente la memoria non più utilizzata.

Esempio:

public void esempio() {
    int a = 10; // memorizzato nello stack
    String s = new String("Ciao"); // oggetto String creato nel montone
}

Qui, a è una variabile locale nello stack, e l'oggetto String si trova nel montone.