La fragmentation se produit également dans la mémoire système (RAM). Les processus d'application et de système allouent et utilisent de la mémoire dans des blocs non contigus, car les registres de mémoire existants sont utilisés et réutilisés.
Ram peut-il se fragmenter ?
La pagination de la mémoire crée une fragmentation interne car un cadre de page entier sera alloué, que cette quantité de stockage soit nécessaire ou non. En raison des règles régissant l'allocation de mémoire, plus de mémoire informatique est parfois allouée que nécessaire.
Qu'est-ce qui cause la fragmentation de la mémoire ?
La fragmentation de la mémoire se produit lorsque la majeure partie de votre mémoire est allouée dans un grand nombre de blocs ou de morceaux non contigus - laissant un bon pourcentage de votre mémoire totale non allouée, mais inutilisable pour la plupart des scénarios typiques. Cela entraîne des exceptions de mémoire insuffisante ou des erreurs d'allocation (c'est-à-dire que malloc renvoie null).
La fragmentation de la mémoire est-elle mauvaise ?
En général, la programmation c++ il n'y a pas de problème de fragmentation de la mémoire. Vous voyez toujours la mémoire virtuelle et vous allouez toujours des morceaux de mémoire virtuelle contigus. La seule chose que vous pouvez remarquer est que les morceaux alloués séquentiellement ne sont pas nécessairement adjacents en mémoire.
Comment empêcher la fragmentation de la mémoire ?
Si vous pouvez isoler exactement les endroits où vous êtes susceptible d'allouer de gros blocs, vous pouvez (sous Windows) directement appeler VirtualAlloc au lieu de passer par le gestionnaire de mémoire. Cela éviterafragmentation dans le gestionnaire de mémoire normal.