Ο κατακερματισμός εμφανίζεται επίσης στη μνήμη συστήματος (RAM). Οι διεργασίες εφαρμογών και συστήματος εκχωρούν και χρησιμοποιούν τη μνήμη σε μη συνεχόμενα μπλοκ, καθώς οι υπάρχοντες καταχωρητές μνήμης χρησιμοποιούνται και επαναχρησιμοποιούνται.
Μπορεί ο Ram να κατακερματιστεί;
Η σελιδοποίηση μνήμης δημιουργεί εσωτερικό κατακερματισμό, επειδή ένα ολόκληρο πλαίσιο σελίδας θα εκχωρηθεί ανεξάρτητα από το αν χρειάζεται τόσο πολύς χώρος αποθήκευσης. Λόγω των κανόνων που διέπουν την εκχώρηση μνήμης, μερικές φορές εκχωρείται περισσότερη μνήμη υπολογιστή από όση χρειάζεται.
Τι προκαλεί τον κατακερματισμό της μνήμης;
Κατακερματισμός μνήμης είναι όταν το μεγαλύτερο μέρος της μνήμης σας εκχωρείται σε μεγάλο αριθμό μη συνεχόμενων μπλοκ ή κομματιών - αφήνοντας ένα καλό ποσοστό της συνολικής σας μνήμης αδιάθετο, αλλά αχρησιμοποίητο για τα πιο τυπικά σενάρια. Αυτό έχει ως αποτέλεσμα εξαιρέσεις εκτός μνήμης ή σφάλματα κατανομής (δηλαδή το malloc επιστρέφει null).
Είναι κακός ο κατακερματισμός της μνήμης;
Σε γενικό προγραμματισμό c++ δεν υπάρχει πρόβλημα με τον κατακερματισμό της μνήμης. Βλέπετε πάντα την εικονική μνήμη και εκχωρείτε πάντα συνεχόμενα κομμάτια εικονικής μνήμης. Το μόνο πράγμα που μπορείτε να παρατηρήσετε ότι τα διαδοχικά εκχωρημένα κομμάτια δεν είναι απαραίτητα γειτονικά στη μνήμη.
Πώς αποτρέπετε τον κατακερματισμό της μνήμης;
Εάν μπορείτε να απομονώσετε ακριβώς εκείνα τα μέρη όπου είναι πιθανό να εκχωρήσετε μεγάλα μπλοκ, μπορείτε (στα Windows) να καλέσετε απευθείας το VirtualAlloc αντί να μεταβείτε στη διαχείριση μνήμης. Αυτό θα αποφευχθείκατακερματισμός εντός του κανονικού διαχειριστή μνήμης.