Sobes.tech
Junior

Czym są heap i stack?

sobes.tech AI

Odpowiedź od AI

Heap i Stack to dwa obszary pamięci używane przez programy do przechowywania danych.

  • Stack (stos) to obszar pamięci, w którym przechowywane są zmienne lokalne, parametry funkcji i adresy powrotu. Działa na zasadzie LIFO (ostatni weszło, pierwszy wyszło). Gdy wywoływana jest funkcja, przydzielany jest blok na stosie, a po jej zakończeniu jest zwalniany. Stos ma ograniczony rozmiar i jest zarządzany automatycznie.

  • Heap (stos) to obszar pamięci do dynamicznego przydzielania obiektów i danych, których rozmiar może się zmieniać podczas działania programu. W Javie obiekty tworzone są na stosie, a garbage collector automatycznie zwalnia nieużywaną pamięć.

Przykład:

public void przyklad() {
    int a = 10; // przechowywane na stosie
    String s = new String("Cześć"); // obiekt String tworzony na stosie
}

Tutaj a jest zmienną lokalną na stosie, a obiekt String znajduje się na stosie.