Key Difference – Garbage Collector vs Destructor
Οι περισσότερες γλώσσες προγραμματισμού υποστηρίζουν αντικειμενοστραφή προγραμματισμό. Είναι μια μεθοδολογία για την κατασκευή ενός προγράμματος ή ενός λογισμικού χρησιμοποιώντας αντικείμενα. Ένα αντικείμενο δημιουργείται χρησιμοποιώντας μια κλάση, επομένως είναι μια παρουσία μιας κλάσης. Μια κλάση παρέχει την περιγραφή από τι πρέπει να αποτελείται το αντικείμενο. Κατά τη δημιουργία αντικειμένων, εκχωρείται μνήμη για τα αντικείμενα. Η εκχωρημένη μνήμη θα πρέπει να απελευθερωθεί στο τέλος της εκτέλεσης του προγράμματος για να επαναχρησιμοποιηθεί αυτή η μνήμη για κάποιο άλλο αντικείμενο. Γλώσσες προγραμματισμού όπως η Java και η C. NET χρησιμοποιούν συλλέκτες απορριμμάτων για τη διαχείριση μνήμης, ενώ γλώσσες όπως η C και η C++ απαιτούν από τον προγραμματιστή να χειρίζεται τη διαχείριση της μνήμης. Θα πρέπει να εκχωρηθεί η απαραίτητη ποσότητα μνήμης και στο τέλος της εκτέλεσης, η μνήμη πρέπει να απελευθερωθεί. Ο συλλέκτης σκουπιδιών και ο καταστροφέας χρησιμοποιούνται για την απελευθέρωση μνήμης. Η βασική διαφορά μεταξύ του συλλέκτη σκουπιδιών και του καταστροφέα είναι ότι ο συλλέκτης απορριμμάτων είναι ένα λογισμικό που εκτελεί αυτόματη διαχείριση μνήμης ενώ ο καταστροφέας είναι μια ειδική μέθοδος που καλείται από τον συλλέκτη απορριμμάτων κατά την καταστροφή του αντικειμένου.
Τι είναι ένας Σκουπιδοσυλλέκτης;
Ορισμένες γλώσσες προγραμματισμού έχουν περιβάλλοντα διαχείρισης κώδικα. Στις γλώσσες προγραμματισμού Java και C, εκτελείται αυτόματη διαχείριση μνήμης. Ο προγραμματιστής δεν χρειάζεται να ελευθερώσει τη μνήμη που χρησιμοποιείται από τα αντικείμενα. Είναι πιο εύκολο γι 'αυτούς να αναπτύξουν ακόμη και πολύπλοκα συστήματα επειδή η διαχείριση της μνήμης γίνεται αυτόματα. Σε γλώσσες προγραμματισμού όπως C, C++ και Objective C, το πρόγραμμα θα πρέπει να απελευθερώνει τη μνήμη των αντικειμένων πίσω στο σύστημα. Γλώσσες όπως η Java και η C μπορούν να καταλάβουν τα αντικείμενα που δεν χρησιμοποιούνται πλέον. Στη συνέχεια, απελευθερώνουν τη μνήμη που έχει εκχωρηθεί για αυτά τα αντικείμενα πίσω στο σύστημα.
Στις γλώσσες προγραμματισμού C και Java, εάν υπάρχει μια κλάση που ονομάζεται Student, τότε ένα αντικείμενο μπορεί να δημιουργηθεί χρησιμοποιώντας Student s=new Student (); Το "νέο" χρησιμοποιείται για τη δημιουργία μιας παρουσίας της τάξης Student. Κατανέμει μνήμη στο σύστημα. Το «s» αναφέρεται στο μπλοκ μνήμης που έχει εκχωρηθεί για αυτό το αντικείμενο. Τα γλωσσικά περιβάλλοντα προσδιορίζουν εάν τα αντικείμενα χρησιμοποιούνται ή όχι. Εάν δεν χρησιμοποιηθούν περαιτέρω, τότε η μνήμη απελευθερώνεται και μπορεί να χρησιμοποιηθεί αργότερα.
Εικόνα 01: Συλλέκτης σκουπιδιών και καταστροφέας
Κατά την εκτέλεση ενός προγράμματος, τα μπλοκ μνήμης εκχωρούνται από το χώρο συγκέντρωσης μνήμης του συστήματος. Στη συνέχεια, το πρόγραμμα εκτελεί τις εργασίες χρησιμοποιώντας αυτήν τη μνήμη. Όταν τελειώσει η εκτέλεση του προγράμματος, ο συλλέκτης σκουπιδιών καταλαβαίνει εάν τα μπλοκ μνήμης που έχουν εκχωρηθεί για το πρόγραμμα είναι απαραίτητα ή όχι. Εάν δεν απαιτούνται, αυτά τα μπλοκ μνήμης επιστρέφονται στο σύστημα. Έτσι, ο συλλέκτης σκουπιδιών μπορεί να παρακολουθεί τα δημιουργημένα αντικείμενα στο πρόγραμμα. Τα μπλοκ μνήμης που δεν απαιτούνται πλέον αποστέλλονται πίσω στο χώρο αποθήκευσης μνήμης του συστήματος. Το κύριο πλεονέκτημα αυτής της διαδικασίας είναι να επιβεβαιώσει ότι ο προγραμματιστής δεν χρειάζεται να επικεντρωθεί στην κατανομή της μνήμης. Εξισορροπεί την απόδοση και τη χρήση μνήμης.
Τι είναι ο Καταστροφέας;
Ο καταστροφέας είναι μια ειδική συνάρτηση μέλους μιας κλάσης. Επικαλείται κάθε φορά που το αντικείμενο βγαίνει εκτός του πεδίου εφαρμογής. Το αντικείμενο μπορεί να καταστραφεί όταν τελειώνει μια συνάρτηση ή στο τέλος της εκτέλεσης του προγράμματος. Ο καταστροφέας έχει το ίδιο όνομα με το όνομα της κλάσης. Ο κατασκευαστής χρησιμοποιείται για τη δημιουργία του αντικειμένου. Μπορεί να δέχεται παραμέτρους. Ο κατασκευαστής μπορεί επίσης να έχει τιμές επιστροφής. Αλλά σε ένα Destructor, δεν υπάρχει τύπος επιστροφής ή παραμέτρους αποδοχής. Μια τάξη μπορεί να αποτελείται μόνο από έναν καταστροφέα. Ένας καταστροφέας αναφέρεται χρησιμοποιώντας το σύμβολο tilde. Εάν το όνομα της τάξης είναι Student, τότε ο καταστροφέας είναι ~Student () {}.
Ο σκουπιδοσυλλέκτης αναζητά τα αντικείμενα που δεν χρειάζονται πια. Εξασφαλίζει ότι τα αντικείμενα που δεν χρησιμοποιούνται πλέον από το πρόγραμμα θα πρέπει να καταστραφούν. Καλεί τον καταστροφέα να απελευθερώσει τη μνήμη και να διαθέσει τους πόρους. Οι καταστροφείς είναι χρήσιμοι για την απελευθέρωση μνήμης, το κλείσιμο αρχείων, την απελευθέρωση πόρων δικτύου και το κλείσιμο των συνδέσεων βάσης δεδομένων. Στις περισσότερες γλώσσες προγραμματισμού, δεν είναι απαραίτητο να γράψετε τον καταστροφέα επειδή ο συλλέκτης σκουπιδιών καλεί μόνος του τον προεπιλεγμένο κατασκευαστή. Εάν ο προγραμματιστής έχει κάνει οποιαδήποτε δυναμική εκχώρηση μνήμης χρησιμοποιώντας δείκτες σε μια γλώσσα όπως η C++, τότε θα πρέπει να γράψει έναν καταστροφέα για να απελευθερώσει τη μνήμη πριν καταστραφεί το αντικείμενο.
Ποια είναι η ομοιότητα μεταξύ του Garbage Collector και του Destructor;
Τόσο το Garbage Collector όσο και το Destructor χρησιμοποιούνται για την απελευθέρωση μνήμης που δεν απαιτείται πλέον για το πρόγραμμα
Ποια είναι η διαφορά μεταξύ του Garbage Collector και του Destructor;
Συλλέκτης σκουπιδιών εναντίον καταστροφέα |
|
Ο συλλέκτης σκουπιδιών είναι ένα λογισμικό που εκτελεί αυτόματη διαχείριση μνήμης. | Ο καταστροφέας είναι μια ειδική μέθοδος που καλείται από τον συλλέκτη σκουπιδιών κατά την καταστροφή του αντικειμένου. |
Τύπος | |
Ο συλλέκτης σκουπιδιών είναι ένα λογισμικό. | Ένας καταστροφέας είναι μια μέθοδος. |
Σύνοψη – Garbage Collector vs Destructor
Συλλέκτης σκουπιδιών και καταστροφέας είναι δύο όροι που σχετίζονται με την απελευθέρωση μνήμης. Αυτό το άρθρο εξέτασε τη διαφορά μεταξύ του Garbage Collector και του Destructor. Η διαφορά μεταξύ του συλλέκτη απορριμμάτων και του καταστροφέα είναι ότι ο συλλέκτης απορριμμάτων είναι ένα λογισμικό που εκτελεί αυτόματη διαχείριση μνήμης, ενώ ο καταστροφέας είναι μια ειδική μέθοδος που καλείται από τον συλλέκτη απορριμμάτων κατά την καταστροφή του αντικειμένου.
Κατεβάστε το PDF του Garbage Collector vs Destructor
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Παρακαλώ κατεβάστε την έκδοση PDF εδώ: Διαφορά μεταξύ Συλλογέα σκουπιδιών και Καταστροφέα