La frammentazione si verifica anche nella memoria di sistema (RAM). I processi dell'applicazione e del sistema allocano e utilizzano la memoria in blocchi non contigui, poiché i registri di memoria esistenti vengono utilizzati e riutilizzati.
La Ram può frammentarsi?
Il paging della memoria crea una frammentazione interna perché verrà allocato un intero frame di pagina indipendentemente dal fatto che sia necessaria o meno tale quantità di spazio di archiviazione. A causa delle regole che regolano l'allocazione della memoria, a volte viene allocata più memoria del computer di quella necessaria.
Cosa causa la frammentazione della memoria?
La frammentazione della memoria si verifica quando la maggior parte della tua memoria è allocata in un gran numero di blocchi o blocchi non contigui - lasciando una buona percentuale della tua memoria totale non allocata, ma inutilizzabile per gli scenari più tipici. Ciò si traduce in eccezioni di memoria insufficiente o errori di allocazione (ad es. malloc restituisce null).
La frammentazione della memoria è grave?
Nella programmazione c++ generale non ci sono problemi con la frammentazione della memoria. Vedi sempre la memoria virtuale e allochi sempre blocchi di memoria virtuale contigui. L'unica cosa che puoi notare è che i blocchi allocati in sequenza non sono necessariamente adiacenti in memoria.
Come previeni la frammentazione della memoria?
Se riesci a isolare esattamente quei luoghi in cui è probabile che allocare blocchi di grandi dimensioni, puoi (su Windows) direttamente chiamare VirtualAlloc invece di passare attraverso il gestore della memoria. Questo eviteràframmentazione all'interno del normale gestore della memoria.