This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
java:objects [2015/02/05 10:20] gthanos [Χρήση των πεδίων ενός αντικειμένου] |
java:objects [2015/02/05 10:27] gthanos [Garbage Collection] |
||
---|---|---|---|
Line 240: | Line 240: | ||
Οι γλώσσες υψηλού επιπέδου που μέχρι τώρα έχετε γνωρίσει (**C**) αναθέτουν την ευθύνη δέσμευση μνήμης στον προγραμματιστή μέσω των συναρτήσεων **malloc()** και **free()**. Σε αντιδιαστολή, η **JAVA** αφήνει τον προγραμματιστεί να ορίσει όσα αντικείμενα επιθυμεί και δεσμεύει την μνήμη για αυτά μέσω του τελεστή **new**. | Οι γλώσσες υψηλού επιπέδου που μέχρι τώρα έχετε γνωρίσει (**C**) αναθέτουν την ευθύνη δέσμευση μνήμης στον προγραμματιστή μέσω των συναρτήσεων **malloc()** και **free()**. Σε αντιδιαστολή, η **JAVA** αφήνει τον προγραμματιστεί να ορίσει όσα αντικείμενα επιθυμεί και δεσμεύει την μνήμη για αυτά μέσω του τελεστή **new**. | ||
- | Περιοδικά το **JVM** κοιτάει εάν υπάρχουν αντικείμενα για τα οποία δεν υπάρχουν πλέον μεταβλητές που δείχνουν σε αυτά. Σε αυτές τις περιπτώσεις ελευθερώνει την μνήμη που έχει δεσμευτεί για τα αντικείμενα που εντόπισε. Ο μηχανισμός αυτός ονομάζεται **Garbage Collection** και απαντάται σε αρκετές γλώσσες υψηλού επιπέδου απελευθερώνοντας τον προγραμματιστή από την ευθύνη αποδέσμευσης της μνήμης που δεσμέυτηκε. | + | Πως όμως αποδεσμεύεται η μνήμη που δεσμεύτηκε προηγούμενα από το πρόγραμμα μας, αλλά δεν την χρειαζόμαστε πλέον; Αν η μνήμη δεν αποδεσμεύεται και το πρόγραμμα μας τρέξει για αρκετή ώρα δεσμεύοντας μνήμη, τότε είναι σίγουρο ότι θα το τερματίσει το λειτουργικό σύστημα. Η απάντηση, όσον αφορά την αποδέσμευση μνήμης στη Java δίνεται παρακάτω. |
- | Περισσότερα για την λειτουργία του Garbage Collector μπορείτε να βρείτε [[http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html|εδώ]]. | + | Περιοδικά το **JVM** κοιτάει εάν υπάρχει δεσμευμένη μνήμη για αντικείμενα στα οποία δεν υφίστανται πλέον μεταβλητές που δείχνουν σε αυτά. Σε αυτές τις περιπτώσεις, ελευθερώνεται η μνήμη που έχει δεσμευτεί για τα αντικείμενα που εντόπισε το JVM. Ο μηχανισμός αυτός ονομάζεται **Garbage Collection** και απαντάται σε αρκετές γλώσσες υψηλού επιπέδου απελευθερώνοντας τον προγραμματιστή από την ευθύνη αποδέσμευσης της μνήμης που δεσμεύτηκε προηγούμενα. |
+ | |||
+ | Η ευθύνη της αποδέσμευσης μνήμης επαφίεται στο Garbage Collector, πράγμα που κάνει πιο εύκολη τη ζωή του προγραμματιστή. Από την άλλη, σε προγράμματα που απαιτούν πολύ υψηλές επιδόσεις ή έχουν αυστηρούς περιορισμούς ως προς τον χρόνο εκτέλεσης τους, ο αλγόριθμος που χρησιμοποιεί ο Garbage Collector μπορεί να εισάγει μη αποδεκτή καθυστέρηση. | ||
+ | |||
+ | Περισσότερα για την λειτουργία του Garbage Collector και τις εναλλακτικές υλοποιήσεις μπορείτε να βρείτε [[http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html|εδώ]]. | ||