Sobes.tech
Junior — Middle

Πότε ακριβώς πραγματοποιείται η συλλογή απορριμμάτων για αντικείμενα που αναφέρονται μέσω Soft Reference;

sobes.tech AI

Απάντηση από AI

Τα αντικείμενα που αναφέρονται μέσω SoftReference συλλέγονται από τον garbage collector μόνο όταν υπάρχει έλλειψη μνήμης. Αυτό σημαίνει ότι τέτοια αντικείμενα ζουν περισσότερο από τα αντικείμενα με κανονικές ισχυρές αναφορές, αλλά μπορούν να διαγραφούν αν η JVM αντιμετωπίζει πίεση μνήμης.

Το SoftReference χρησιμοποιείται συχνά για την υλοποίηση cache: τα αντικείμενα παραμένουν στη μνήμη όσο υπάρχουν πόροι και διαγράφονται όταν χρειάζεται να ελευθερωθεί μνήμη.

Έτσι, ο garbage collector θα διαγράψει ένα αντικείμενο που αναφέρεται μέσω SoftReference όταν:

  • Υπάρχει λίγος ελεύθερος χώρος μνήμης.
  • Η JVM αποφασίσει ότι πρέπει να ελευθερώσει μνήμη για νέα αντικείμενα.

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