Sobes.tech
Junior

Какво е heap и stack?

sobes.tech AI

Отговор от AI

Heap и Stack са две области на памет, използвани от програмите за съхранение на данни.

  • Stack (стек) е област на паметта, където се съхраняват локални променливи, параметри на функции и адреси за връщане. Той работи по принципа LIFO (последният влязъл, първият излязъл). Когато се извика функция, се заделя блок в стека, а след приключване се освобождава. Стекът има ограничен размер и се управлява автоматично.

  • Heap (купа) е област на паметта за динамично заделяне на обекти и данни, чийто размер може да се променя по време на изпълнение на програмата. В Java обектите се създават в купата, а събирачът на боклука автоматично освобождава неизползваната памет.

Пример:

public void primer() {
    int a = 10; // съхранява се в стека
    String s = new String("Здравей"); // обектът String се създава в купата
}

Тук a е локална променлива в стека, а обектът String е в купата.