Minnesfragmentering uppstår när ett system innehåller minne som är tekniskt ledigt men som datorn inte kan använda. Minnesallokeraren, som tilldelar nödvändigt minne till olika uppgifter, delar upp och fördelar minnesblock som de krävs av program; när data raderas frigörs fler minnesblock i systemet och läggs tillbaka till poolen med tillgängligt minne. När allokeringsåtgärderna eller återställningen av tidigare ockuperade minnessegment leder till block eller till och med byte av minne som är för små eller för isolerade för att användas av minnespoolen, har fragmentering inträffat. Fragmentering kan ta en betydande bit ur datorns lediga minne och det är ofta orsaken till frustrerande felmeddelanden utanför minnet.
Intern fragmentering
Intern fragmentering inträffar när minnesallokatorn lämnar extra utrymme tomt inne i ett minnesblock som har tilldelats en klient. Detta händer vanligtvis för att processorns design anger att minnet måste skäras i block av vissa storlekar - till exempel kan det krävas att blocken delas jämnt med fyra, åtta eller 16 byte. När detta inträffar kan till exempel en klient som behöver 57 byte minne tilldelas ett block som innehåller 60 byte eller till och med 64. De extra byte som klienten inte behöver går till spillo och med tiden går dessa små bitar till spillo av oanvänt minne kan byggas upp och skapa stora mängder minne som inte kan användas av fördelaren. Eftersom alla dessa värdelösa byte finns i större minnesblock anses fragmenteringen vara intern.
Extern fragmentering
Extern fragmentering inträffar när minnesallokeraren lämnar delar av oanvända minnesblock mellan delar av tilldelat minne. Till exempel, om flera minnesblock tilldelas i en kontinuerlig linje men ett av mittblocken i raden frigörs (kanske för att processen som använde det minnesblocket slutade gå), är det fria blocket fragmenterat. Blocket är fortfarande tillgängligt för användning av allokeraren senare om det finns ett behov av minne som passar i det blocket, men blocket är nu oanvändbart för större minnesbehov. Det kan inte klumpas in igen med det totala lediga minnet som är tillgängligt för systemet, eftersom totalt minne måste vara angränsande för att det ska kunna användas för större uppgifter. På detta sätt kan hela delar av ledigt minne hamna isolerade från det hela som ofta är för små för betydande användning, vilket skapar en total minskning av ledigt minne som över tid kan leda till brist på tillgängligt minne för viktiga uppgifter.
Fragmentering kan betyda stora problem för system
Fragmentering kan bli ett problem eftersom det byggs upp över tiden, skapar små och värdelösa minnesblock och begränsar mängden datorns tillgängliga lediga minne. Efterhand som fragmenteringen kan leda till att systemets prestanda blir långsamma och tröga på kort sikt. på lång sikt kan fragmentering förkorta en dators eller servers livslängd med i genomsnitt 30 procent. Av de två typerna av fragmentering är internt mer förutsägbart än externt eftersom mängden slösat utrymme bestäms av minnesallokeringsparametrarna (hur stora de tilldelade blocken måste vara), vilket är en konstant. Dessutom är mängden totalt minne förlorat till intern fragmentering vanligtvis mindre än vad som har förlorats för extern fragmentering, även om det gradvis kan ackumuleras. Extern fragmentering, å andra sidan, är svårare att förutsäga eftersom i de flesta fall regelbundet startar och stoppas flera processer i systemet och minnesblock som används i varierande tid frigörs i en annan ordning än de fylldes, lämnar luckor i tillgängligt minne.
Bekämpa fragmentering för förbättrad prestanda
När det gäller optimering av RAM är den enda användbara lösningen att starta om systemet, vilket rensar mycket av det minne som används av långvariga program och ger datorn en ny start för allokering av minne. Verktyg som hävdar att de defragter RAM är vilseledande, eftersom den virtuella minneshanteraren i moderna datorer arbetar för att optimera RAM-användningen ständigt. För din hårddisk kan dock vissa defragmenteringar krävas för att maximera systemets prestanda. Om du kör Windows Vista eller senare versioner defragmenterar systemet automatiskt hårddiskutrymmet regelbundet åt dig. Om du märker av långsammare systemprestanda och vill köra defragmenteraren själv kan du starta processen manuellt genom att klicka på "Start" och sedan på "Alla program | Tillbehör | Systemverktyg | Diskdefragmentering." Klicka slutligen på "Defragmentera nu." Processen kan ta allt från minuter till timmar beroende på hur fragmenterad hårddisken är, men den goda nyheten är att du kan använda din dator medan Diskdefragmentering körs.
Problemet med fragmentering gäller inte alla operativsystem lika. För Mac-datorer är defragmentering inte nödvändigt eftersom Mac OS X automatiskt optimerar diskutrymme när filer skrivs. Linux-maskiner kräver inte heller regelbunden defragmentering eftersom de tilldelar minne i ett spridd format i stället för ett angränsande, vilket ger filerna utrymme att expandera. Linux-användare som ser en nedgång i systemprestanda bör överväga att öka storleken på hårddisken. Slutligen bör du aldrig defragmentera en SSD-lagringsenhet (till exempel en USB-enhet), eftersom defragmentering faktiskt kan förkorta den användbara livslängden för SSD-enheter.