Junior — Middle
Πώς καθορίζει το λειτουργικό σύστημα πότε ένα αντικείμενο στη μνήμη δεν χρησιμοποιείται πλέον και μπορεί να απελευθερωθεί με ασφάλεια;
sobes.tech AI
Απάντηση από AI
Το λειτουργικό σύστημα από μόνο του δεν διαχειρίζεται άμεσα την απελευθέρωση αντικειμένων στη μνήμη — αυτό είναι ευθύνη του περιβάλλοντος εκτέλεσης και της γλώσσας προγραμματισμού. Για παράδειγμα, στο iOS, η διαχείριση μνήμης γίνεται μέσω του μηχανισμού ARC (Αυτόματη Καταμέτρηση Αναφορών).
Το ARC παρακολουθεί τον αριθμό των αναφορών σε ένα αντικείμενο. Όταν ο μετρητής αναφορών ενός αντικειμένου φτάσει στο μηδέν (δηλαδή, κανείς πλέον δεν αναφέρεται σε αυτό), το αντικείμενο απελευθερώνεται αυτόματα από τη μνήμη.
Παράδειγμα:
class MyClass {}
var obj: MyClass? = MyClass() // μετρητής αναφορών = 1
obj = nil // μετρητής αναφορών = 0, το αντικείμενο απελευθερώνεται
Έτσι, το λειτουργικό σύστημα δεν καθορίζει πότε ένα αντικείμενο δεν χρησιμοποιείται πλέον — το κάνει το περιβάλλον εκτέλεσης μέσω της καταμέτρησης αναφορών ή του συλλέκτη απορριμμάτων.