Hukommelsesfragmentering opstår, når et system indeholder hukommelse, der er teknisk ledig, men som computeren ikke kan bruge. Hukommelsesallokatoren, som tildeler den nødvendige hukommelse til forskellige opgaver, deler og allokerer hukommelsesblokke, som de kræves af programmerne; når data slettes frigøres flere hukommelsesblokke i systemet og føjes tilbage til puljen med tilgængelig hukommelse. Når tildelers handlinger eller gendannelse af tidligere besatte hukommelsessegmenter fører til blokke eller endda bytes hukommelse, der er for små eller for isolerede til at blive brugt af hukommelsespuljen, er der sket fragmentering. Fragmentering kan tage en betydelig bid ud af en computers ledige hukommelse, og det er ofte årsagen til frustrerende fejlmeddelelser uden for hukommelsen.
Intern fragmentering
Intern fragmentering opstår, når hukommelsesallokeringen efterlader ekstra plads tom inde i en hukommelsesblok, der er tildelt til en klient. Dette sker normalt, fordi processorens design foreskriver, at hukommelsen skal skæres i blokke af bestemte størrelser - for eksempel kan blokke være forpligtet til at blive delt jævnt med fire, otte eller 16 byte. Når dette sker, kan en klient, der f.eks. Har brug for 57 byte hukommelse, tildeles en blok, der indeholder 60 byte eller endda 64. De ekstra byte, som klienten ikke har brug for, går til spilde, og med tiden går disse små bidder til spilde af ubrugt hukommelse kan opbygge og skabe store mængder hukommelse, der ikke kan bruges af allokatoren. Fordi alle disse ubrugelige byte er inde i større hukommelsesblokke, betragtes fragmenteringen som intern.
Ekstern fragmentering
Ekstern fragmentering sker, når hukommelsesallokereren efterlader sektioner af ubrugte hukommelsesblokke mellem dele af allokeret hukommelse. For eksempel, hvis flere hukommelsesblokke er allokeret i en kontinuerlig linje, men en af de midterste blokke i linjen frigøres (måske fordi processen, der brugte den hukommelsesblok, stoppede med at køre), er den frie blok fragmenteret. Blokken er stadig tilgængelig til brug af tildeleren senere, hvis der er behov for hukommelse, der passer ind i blokken, men blokken er nu ubrugelig til større hukommelsesbehov. Det kan ikke klumpes tilbage med den samlede ledige hukommelse, der er tilgængelig for systemet, da den samlede hukommelse skal være sammenhængende, for at den kan bruges til større opgaver. På denne måde kan hele sektioner af fri hukommelse ende med at blive isoleret fra det hele, der ofte er for små til væsentlig brug, hvilket skaber en samlet reduktion af ledig hukommelse, der over tid kan føre til en mangel på tilgængelig hukommelse til nøgleopgaver.
Fragmentering kan betyde store problemer for systemer
Fragmentering kan blive et problem, fordi det opbygges over tid og skaber små og ubrugelige hukommelsesblokke og begrænser mængden af en computers tilgængelige ledige hukommelse. Efterhånden som fragmenteringen udvikler sig, kan systemets ydeevne blive langsom og træg på kort sigt. på lang sigt kan fragmentering forkorte en computers eller serveres levetid med 30 procent i gennemsnit. Af de to typer fragmentering er intern mere forudsigelig end ekstern, fordi mængden af spildt sted bestemmes af hukommelsesallokerings parametre (hvor stor de tildelte blokke skal være), hvilket er en konstant. Derudover er mængden af samlet hukommelse, der er tabt ved intern fragmentering, normalt mindre end det, der er tabt ved ekstern fragmentering, selvom den gradvist kan akkumuleres. Ekstern fragmentering er derimod sværere at forudsige, fordi der i de fleste tilfælde regelmæssigt starter og stoppes flere processer i systemet, og hukommelsesblokke, der bruges i forskellige tidsrum, frigøres i en anden rækkefølge, end de blev fyldt, efterlader huller i den tilgængelige hukommelse.
Bekæmpelse af fragmentering for forbedret ydeevne
Når det kommer til optimering af RAM, er den eneste nyttige løsning at genstarte systemet, hvilket rydder meget af den hukommelse, der bruges af længe kørende programmer, og giver computeren en ny start for tildeling af hukommelse. Værktøjer, der hævder at defragtere RAM, er vildledende, da den virtuelle hukommelsesmanager i moderne computere arbejder på at optimere RAM-brugen konstant. For din harddisk kan det dog være nødvendigt med en vis defragmentering for at maksimere systemets ydelse. Hvis du kører Windows Vista eller nyere versioner, defragmenterer systemet automatisk din harddiskplads med jævne mellemrum for dig. Hvis du bemærker langsommere systemydelse og selv vil køre defragmenteringen, kan du manuelt starte processen ved at klikke på "Start", derefter "Alle programmer | Tilbehør | Systemværktøjer | Diskdefragmentering." Klik til sidst på "Defragmenter nu." Processen kan tage alt fra minutter til timer afhængigt af, hvor fragmenteret din harddisk er, men den gode nyhed er, at du kan bruge din computer, mens Diskdefragmentering kører.
Problemet med fragmentering gælder ikke alle operativsystemer ens. For Mac-computere er defragmentering ikke nødvendig, fordi Mac OS X optimerer automatisk diskplads, når filer skrives. Linux-maskiner kræver heller ikke regelmæssig defragmentering, fordi de tildeler hukommelse i et spredt format i stedet for et sammenhængende, hvilket giver filerne plads til at udvide. Linux-brugere, der ser et fald i systemets ydeevne, bør overveje at øge størrelsen på deres harddisk. Endelig bør du aldrig defragmentere et solid state-lagerdrev (såsom et USB-drev), da defragmentering faktisk kan forkorte den anvendelige levetid for solid state-drev.