Συλλογή απορριμμάτων στην Ιάβα: Όλα όσα πρέπει να γνωρίζετε



Αυτό το άρθρο σχετικά με τη συλλογή απορριμμάτων στην Ιάβα σας δίνει μια ξεκάθαρη ιδέα για το πώς λειτουργεί, τους τύπους και τις διαφορετικές μεθόδους στη συλλογή απορριμμάτων στην Ιάβα

είναι μια γλώσσα προγραμματισμού γενικής χρήσης και εάν σε περίπτωση που αντιμετωπίσετε μια κατάσταση όπου υπάρχουν αχρησιμοποίητα δεδομένα στο πρόγραμμά σας και δεν ξέρετε πώς να το χειριστείτε, η συλλογή απορριμμάτων στην Java είναι βολική Γι 'αυτό, γράφω αυτό το άρθρο για να σας βοηθήσω να χειριστείτε αυτές τις λειτουργίες.

Θα καλύψω τα θέματα με την ακόλουθη σειρά:





Ας αρχίσουμε!

Τι είναι η συλλογή απορριμμάτων στην Java;

Στην Java, οι προγραμματιστές αντιμετωπίζουν το ζήτημα ότι πρέπει να καταστρέψουν το αντικείμενα που είναι εκτός χρήσης. Αλλά με τον Συλλέκτη απορριμμάτων, αυτό μπορεί να αντιμετωπιστεί εύκολα. Ο κύριος στόχος αυτού του Συλλέκτη απορριμμάτων είναι να ελευθερώσει τη σωστή μνήμη καταστρέφοντας τα αντικείμενα που δεν περιέχει αναφορά. Η τεχνική είναι γνωστή ως Συλλογή απορριμάτων.



Θεωρείται επίσης ως πρόγραμμα που βοηθά στην αυτόματη διαχείριση της μνήμης. Πότε εκτελούνται στο JVM, δημιουργούνται αντικείμενα στο σωρό, το οποίο είναι στην πραγματικότητα ένα μέρος της μνήμης που είναι αφιερωμένο στο πρόγραμμα. Τελικά, ορισμένα αντικείμενα δεν θα χρειάζονται πλέον. ο συλλέκτης σκουπιδιών βρίσκει αυτά τα αχρησιμοποίητα αντικείμενα και τα διαγράφει για να ελευθερώσει κάποια μνήμη.

  • Προγράμματα που δεν εκχωρούν μνήμη μπορεί τελικά να σπάσουν όταν δεν υπάρχει μνήμη στο σύστημα προς εκχώρηση. Όλα αυτά τα προγράμματα λέγεται ότι έχουν διαρροές μνήμης.
  • Η συλλογή απορριμμάτων στην Java πραγματοποιείται αυτόματα κατά τη διάρκεια ζωής ενός προγράμματος, εξαλείφοντας την αναγκαιότητα απόσυρσης της μνήμης και, επομένως, αποφεύγοντας τις διαρροές μνήμης.
  • Μέθοδοι όπως Ελεύθερος() στα C και διαγράφω() χρησιμοποιούνται στο C ++ αλλά, στην Java, εκτελείται αυτόματα. Ετσι, παρέχει καλύτερη διαχείριση μνήμης.

Τώρα, ας καταλάβουμε πώς λειτουργεί αυτή η αυτόματη συλλογή απορριμμάτων στην Java.

Σημείωση : Ένα αντικείμενο λέγεται ότι είναι κατάλληλο για συλλογή απορριμμάτων εάν δεν είναι προσβάσιμο.



Πώς λειτουργεί η συλλογή απορριμμάτων;

Η συλλογή απορριμμάτων είναι μια διαδικασία συνεργασίας με τη μνήμη Heap και επίσης σημάδι ή προσδιορίστε τα απρόσιτα αντικείμενα και καταστρέψτε τα με συμπίεση.

Η συλλογή απορριμμάτων στην Java είναι μια αυτόματη διαδικασία και ο προγραμματιστής δεν χρειάζεται να επισημαίνει ρητά αντικείμενα προς διαγραφή. Η εφαρμογή ζει κυρίως στο . Κάθε JVM μπορεί να εφαρμόσει τη συλλογή απορριμμάτων. Η μόνη απαίτηση είναι ότι πρέπει να πληροί τις προδιαγραφές JVM.

Παρόλο που υπάρχουν πολλά JVM διαθέσιμα, Η Oracle's HotSpot είναι μακράν το πιο κοινό, καθώς προσφέρει ένα ισχυρό και ώριμο σύνολο επιλογών συλλογής απορριμμάτων.

  • Το HotSpot διαθέτει αρκετούς συλλέκτες απορριμμάτων που έχουν βελτιστοποιηθεί για διάφορες περιπτώσεις χρήσης και όλοι οι συλλέκτες απορριμμάτων ακολουθούν την ίδια βασική διαδικασία.
  • Στο πρώτο βήμα, μη αναφερόμενα αντικείμενα αναγνωρίζονται και επισημαίνονται ως έτοιμα για συλλογή απορριμμάτων.
  • Στο δεύτερο βήμα, τα επισημασμένα αντικείμενα διαγράφονται. Προαιρετικά, η μνήμη μπορεί να συμπιεστεί αφού ο συλλέκτης απορριμμάτων διαγράψει αντικείμενα, οπότε τα εναπομείναντα αντικείμενα βρίσκονται σε συνεχόμενο μπλοκ στην αρχή του σωρού. Η διαδικασία συμπύκνωσης καθιστά ευκολότερη την εκχώρηση μνήμης σε νέα αντικείμενα διαδοχικά μετά την κατανομή της μνήμης σε υπάρχοντα αντικείμενα.

Όλοι οι συλλέκτες απορριμμάτων του HotSpot εφαρμόζουν μια στρατηγική συλλογής γενεών που κατηγοριοποιεί αντικείμενα ανά ηλικία. Το σκεπτικό πίσω από τη γενιά της συλλογής απορριμμάτων είναι ότι τα περισσότερα αντικείμενα είναι βραχύβια και θα είναι έτοιμα για συλλογή απορριμμάτων αμέσως μετά τη δημιουργία.

Τώρα ας δούμε ποιοι είναι οι διαφορετικοί τύποι συλλεκτών απορριμμάτων.

Τύποι συλλεκτών απορριμμάτων

Το JVM παρέχει τέσσερις διαφορετικούς συλλέκτες σκουπιδιών, όλα γενεαλογικά. Κάθε ένα έχει τα δικά του πλεονεκτήματα και περιορισμούς. Η επιλογή της συλλογής απορριμμάτων για χρήση βρίσκεται στον χρήστη και μπορεί να υπάρχουν πολλές διαφορές στην παύση διεκπεραιώσεων και εφαρμογής.

Υπάρχουν συγκεκριμένα 4 τύποι συλλεκτών σκουπιδιών.

  • Σειριακός συλλέκτης απορριμμάτων (GC) :Όλες οι εκδηλώσεις συλλογής απορριμμάτων πραγματοποιούνται σειριακά σε ένα νήμα. Η συμπύκνωση εκτελείται μετά από κάθε συλλογή απορριμμάτων.
  • Παράλληλη / απόδοση GC: Πολλαπλές κλωστές χρησιμοποιούνται για τη συλλογή μικρών / μικρών σκουπιδιών. Ένα μονό νήμα χρησιμοποιείται για τη σημαντική συλλογή απορριμμάτων και τη συμπύκνωση Old Generation. Επίσης, η παράλληλη παραλλαγή χρησιμοποιεί πολλά νήματα για σημαντική συλλογή απορριμμάτων και συμπύκνωση Old Generation.
  • Συλλέκτης CMS :Πολλαπλές κλωστές χρησιμοποιούνται για τη συλλογή απορριμμάτων μικρών / δευτερευόντων χρησιμοποιώντας τον ίδιο αλγόριθμο με το Parallel. Η πλειονότητα της συλλογής απορριμμάτων είναι πολλαπλών νημάτων, αλλά το CMS λειτουργεί ταυτόχρονα με τις διαδικασίες εφαρμογής για την ελαχιστοποίηση των συμβάντων εφαρμογής. Δεν πραγματοποιείται συμπίεση.
  • Συλλέκτης G1 :Αυτός ο συλλέκτης σκουπιδιών προορίζεται βασικά ως αντικατάσταση του CMS. Είναι παράλληλη και ταυτόχρονη όπως το CMS, αλλά λειτουργεί αρκετά διαφορετικά όταν συγκρίνεται με τους παλαιότερους συλλέκτες απορριμμάτων.

Ας κατανοήσουμε τα πλεονεκτήματα της συλλογής απορριμμάτων στην Ιάβα.

Πλεονεκτήματα

  • Το μεγαλύτερο πλεονέκτημα της συλλογής απορριμμάτων Java είναι ότι αυτόματα χειρίζεται τη διαγραφή αχρησιμοποίητων αντικειμένων ή ορισμένων αντικειμένων που δεν είναι προσβάσιμα για να ελευθερώσετε πόρους μνήμης.
  • Η συλλογή απορριμμάτων είναι πλέον ένα νέο πρότυπο συστατικό πολλών δημοφιλών γλωσσών προγραμματισμού.
  • Κάνει Java αποδοτικό. Είναι επειδή ο συλλέκτης απορριμμάτων αφαιρεί τα αναφερόμενα αντικείμενα από τη σωστή μνήμη.
  • είναι γίνεται αυτόματα από τον συλλέκτη απορριμμάτων που αποτελεί μέρος της JVM.

Βέλτιστες πρακτικές

Η καλύτερη προσέγγιση για προσαρμογή στη συλλογή απορριμμάτων Java είναι ο καθορισμός σημαιών στο JVM. Οι σημαίες έχουν τη δυνατότητα προσαρμογής του συλλέκτη απορριμμάτων που θα χρησιμοποιηθεί. Βοηθάει να το καταστήσουμε το πιο κατάλληλο για επεξεργασία backend όπου είναι αποδεκτές μεγάλες παύσεις για τη συλλογή απορριμμάτων.

Ένα άλλο πράγμα που πρέπει να σημειωθεί εδώ είναι ότι ο συλλέκτης σκουπιδιών CMS έχει σχεδιαστεί για να ελαχιστοποιεί τις παύσεις που το καθιστούν ιδανικό για εφαρμογές GUI όπου η απόκριση είναι πολύ σημαντική. Επιπρόσθετος συντονισμός μπορεί να επιτευχθεί αλλάζοντας το μέγεθος του σωρού ή των τμημάτων του και μετρώντας την απόδοση συλλογής απορριμμάτων.

Ας ρίξουμε μια ματιά σε αυτό το πρόγραμμα.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Τιμή b =' + b)} δημόσιος στατικός κενός κενός (String args []) {Edureka e1 = νέο Edureka () Edureka e2 = νέο Edureka () e1.setData (1,2) e2.setData (3 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

Σε αυτήν την περίπτωση, οι δύοδημιουργούνται αντικείμενα και δύο μεταβλητές αναφοράς. Εάν προσθέσετε άλλη εντολή e3 = Null,δύο μεταβλητές αναφοράς θα δείχνουν στο ίδιο αντικείμενο. Και εάν δεν υπάρχει αναφορά στη μεταβλητή, e3 = e2e3.showData () Σε αυτό το σημείο, δεν υπάρχουν αναφορές που να δείχνουν το αντικείμενο και καθίσταται επιλέξιμο για συλλογή απορριμμάτων.

Αυτό μας φέρνει στο τέλος αυτού του άρθρου «Συλλογή απορριμμάτων στην Java». Έχουμε μάθει πώς να αφαιρούμε αχρησιμοποίητα αντικείμενα στο σωρό και τους διαφορετικούς τύπους συλλογής.

είναι μια σχέση java

Εάν βρήκατε αυτό το άρθρο σχετικά με την «Συλλογή απορριμμάτων στην Ιάβα», δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα στο ταξίδι σας, έχουμε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτής της «Συλλογής απορριμμάτων στην Ιάβα ' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.