Fragmentering forekommer også i systemhukommelsen (RAM). Applikations- og systemprocesser allokerer og bruger hukommelse i ikke-sammenhængende blokke, da eksisterende hukommelsesregistre bruges og genbruges.
Kan Ram blive fragmenteret?
Hukommelsessøgning skaber intern fragmentering, fordi en hel sideramme vil blive tildelt, uanset om der er behov for så meget lagerplads eller ej. På grund af reglerne for hukommelsesallokering tildeles der nogle gange mere computerhukommelse end nødvendigt.
Hvad forårsager hukommelsesfragmentering?
Hukommelsesfragmentering er, når det meste af din hukommelse er allokeret i et stort antal ikke-sammenhængende blokke eller bidder - hvilket efterlader en god procentdel af din samlede hukommelse uallokeret, men ubrugelig for de fleste typiske scenarier. Dette resulterer i undtagelser, der mangler hukommelse, eller tildelingsfejl (dvs. malloc returnerer null).
Er hukommelsesfragmentering dårlig?
Generelt c++-programmering der er intet problem med hukommelsesfragmentering. Du ser altid den virtuelle hukommelse, og du tildeler altid sammenhængende virtuelle hukommelsesstykker. Det eneste, du kan bemærke, at de sekventielt allokerede bidder ikke nødvendigvis støder op til hinanden i hukommelsen.
Hvordan forhindrer du fragmentering af hukommelsen?
Hvis du kan isolere præcis de steder, hvor du sandsynligvis vil allokere store blokke, kan du (på Windows) direkte ringe VirtualAlloc i stedet for at gå gennem memory manager. Dette vil undgåfragmentering i den normale hukommelseshåndtering.