Sobes.tech
Junior

Τι είναι το heap και το stack;

sobes.tech AI

Απάντηση από AI

Heap και Stack είναι δύο περιοχές μνήμης που χρησιμοποιούνται από προγράμματα για την αποθήκευση δεδομένων.

  • Stack (στοίβα) είναι μια περιοχή μνήμης όπου αποθηκεύονται τοπικές μεταβλητές, παράμετροι συναρτήσεων και διευθύνσεις επιστροφής. Λειτουργεί με την αρχή LIFO (τελευταίο εισερχόμενο, πρώτο εξερχόμενο). Όταν καλείται μια συνάρτηση, δεσμεύεται ένα μπλοκ στη στοίβα, και μετά την ολοκλήρωσή της, απελευθερώνεται. Η στοίβα έχει περιορισμένο μέγεθος και διαχειρίζεται αυτόματα.

  • Heap (αποθήκη) είναι μια περιοχή μνήμης για δυναμική κατανομή αντικειμένων και δεδομένων, του οποίου το μέγεθος μπορεί να αλλάξει κατά τη διάρκεια εκτέλεσης του προγράμματος. Στη Java, τα αντικείμενα δημιουργούνται στο heap, και ο συλλέκτης απορριμμάτων ελευθερώνει αυτόματα τη μη χρησιμοποιούμενη μνήμη.

Παράδειγμα:

public void παράδειγμα() {
    int a = 10; // αποθηκεύεται στη στοίβα
    String s = new String("Γειά"); // αντικείμενο String δημιουργείται στο heap
}

Εδώ, το a είναι μια τοπική μεταβλητή στη στοίβα, και το αντικείμενο String βρίσκεται στο heap.