Skip to main content

Τι είναι μια αδύναμη αναφορά;

Μια αδύναμη αναφορά είναι μια αναφορά σε ένα αντικείμενο στη μνήμη που δεν εμποδίζει να καθαριστεί ένα αντικείμενο από ρουτίνες συλλογής σκουπιδιών λόγω της σύνδεσής του με το αντικείμενο.Αυτός ο τύπος αναφοράς χρησιμοποιείται συνήθως για να βοηθήσει στην εξάλειψη των διαρροών μνήμης όταν υπάρχουν ειδικές συνθήκες που εμποδίζουν τη συλλογή κανονικών σκουπιδιών.Αλγόριθμοι προγραμματισμού που χρησιμοποιούν μια κυκλική αναφορά ή κρατούν εξωτερικές πληροφορίες σε μια μνήμη cache ή ένα ειδικό όφελος δομής χρησιμοποιώντας αδύναμες αναφορές.Η αξιοποίηση των ασθενών αναφορών σε αυτές τις μορφές καταστάσεων επιτρέπει τον καθαρισμό των αχρησιμοποίητων αντικειμένων αναφοράς και των σχετικών αδύναμων αναφορών τους.Το αντικείμενο παραμένει διατεταγμένο, εφόσον η ισχυρή αναφορά παραμένει βιώσιμη.Μια ισχυρή αναφορά γίνεται ακυρωμένη και η μνήμη των σχετικών αντικειμένων γίνεται απελευθερωμένη λίγο μετά από μια ισχυρή αναφορά και το αντικείμενο του επισημαίνεται ότι δεν χρησιμοποιείται πλέον από ένα πρόγραμμα.Σε ορισμένες περιπτώσεις, όπως ο προγραμματισμός της υποδοχής ή οι εφαρμογές χειρισμού εικόνων, οι κλάσεις που χρησιμοποιούνται για τη δημιουργία αντικειμένων εργασίας δεν έχουν την ενσωματωμένη ικανότητα για την αποθήκευση πρόσθετων πληροφοριών που απαιτούν μια συγκεκριμένη εφαρμογή.Οι πρόσθετες λεπτομέρειες για μεταβατικά αντικείμενα, όπως συνδέσεις ή εικόνες, πρέπει να αποθηκεύονται σε συμπληρωματικά αντικείμενα cache και να συνδέονται με τα μεταβατικά αντικείμενα με αναφορές.Όταν χρησιμοποιείται μια αδύναμη αναφορά αντί για ισχυρή αναφορά, οι επιπλέον πληροφορίες δεν δεσμεύονται από την αναφορά και μπορούν να αφαιρεθούν από την προσωρινή μνήμη από τον συλλέκτη απορριμμάτων όταν το αντικείμενο αναφοράς έχει επισημανθεί ως μη βιώσιμη.Διατίθεται σε γλώσσες που ενισχύονται από υποσυστήματα συλλογής σκουπιδιών, όπως Java, Python, Perl, C#και το .NET Framework.Στην C ++, ωστόσο, οι προγραμματιστές είναι συνήθως υπεύθυνοι για την εξασφάλιση καθαρισμού της μνήμης.Αυτή η γλώσσα έχει εφαρμόσει μια κλάση Smart Pointer που παρέχει μερικές από τις ίδιες λειτουργίες που παρέχουν οι αδύναμες αναφορές και η συλλογή σκουπιδιών, συμβάλλοντας στη μείωση των διαρροών μνήμης που προκαλούνται από τον ακατάλληλο καθαρισμό του δείκτη.Βελτιώστε τη λειτουργικότητα μιας γλώσσας παρέχοντας λεπτότερες κλίσεις αναφορών εκτός από την ισχυρή ή αδύναμη αναφορά.Οι τύποι δεδομένων, όπως οι μαλακές αναφορές και οι αναφορές Phantom, μπορούν να συμπεριληφθούν σε αυτές τις γλώσσες, οι οποίες επιτρέπουν ποικίλες επίπεδα ανάκτησης αντικειμένων ή ειδοποίησης.Οι προγραμματιστές που χρησιμοποιούν γλώσσες με αυτοματοποιημένη συλλογή σκουπιδιών θα πρέπει να εξοικειωθούν με όλες τις κατηγορίες αναφοράς που είναι διαθέσιμες για να βελτιώσουν την απόδοση των εφαρμογών.