Fragmentacija memorije događa se kada sustav sadrži memoriju koja je tehnički besplatna, ali koju računalo ne može iskoristiti. Alociator memorije, koji raznim zadacima dodjeljuje potrebnu memoriju, dijeli i raspoređuje memorijske blokove onako kako ih zahtijevaju programi; kada se podaci izbrišu, više memorijskih blokova se oslobađa u sustavu i dodaje natrag u spremište dostupne memorije. Kada akcije raspodjele ili obnavljanje prethodno zauzetih segmenata memorije dovode do blokova ili čak bajtova memorije koji su premali ili previše izolirani da bi ih memorijski bazen mogao koristiti, došlo je do fragmentacije. Fragmentacija može znatno oduzeti slobodnu memoriju računala i često je uzrok frustrirajućih poruka o pogreškama izvan memorije.
Unutarnja fragmentacija
Unutarnja fragmentacija događa se kada alokator memorije ostavi dodatni prostor prazan unutar bloka memorije koji je dodijeljen klijentu. To se obično događa jer dizajn procesora predviđa da se memorija mora izrezati na blokove određenih veličina - na primjer, blokovi se mogu ravnomjerno podijeliti s četiri, osam ili 16 bajtova. Kada se to dogodi, klijentu kojem je potrebno 57 bajta memorije, na primjer, može se dodijeliti blok koji sadrži 60 bajtova ili čak 64. Dodatni bajtovi koji klijentu nisu potrebni prolaze, a s vremenom ti sitni komadići neiskorištene memorije može stvoriti i stvoriti velike količine memorije koje alokator ne može staviti u upotrebu. Budući da su svi ti beskorisni bajtovi unutar većih memorijskih blokova, fragmentacija se smatra unutarnjom.
Vanjska fragmentacija
Vanjska se fragmentacija događa kada alokator memorije ostavlja dijelove neiskorištenih memorijskih blokova između dijelova dodijeljene memorije. Na primjer, ako je nekoliko memorijskih blokova dodijeljeno u kontinuirani redak, ali se oslobodi jedan od srednjih blokova u liniji (možda zato što je proces koji je koristio taj blok memorije prestao raditi), slobodni blok je fragmentiran. Blok je i dalje dostupan za raspodjelu ako postoji potreba za memorijom koja stane u taj blok, ali blok je sada neupotrebljiv za veće potrebe memorije. Ne može se vratiti u ukupnu slobodnu memoriju dostupnu sustavu, jer ukupna memorija mora biti susjedna da bi bila korisna za veće zadatke. Na taj način čitavi odjeljci slobodne memorije mogu na kraju biti izolirani od cjeline koji su često premali za značajniju upotrebu, što stvara ukupno smanjenje slobodne memorije što s vremenom može dovesti do nedostatka dostupne memorije za ključne zadatke.
Fragmentacija može značiti velike probleme za sustave
Fragmentacija može postati problem jer se vremenom nakuplja, stvarajući male i beskorisne blokove memorije i ograničavajući količinu slobodne memorije na računalu. Kako napreduje, fragmentacija može uzrokovati usporenje i usporenje performansi sustava u kratkom roku; dugoročno, fragmentacija može u prosjeku skratiti život računala ili poslužitelja za 30 posto. Od dvije vrste fragmentacije, unutarnja je više predvidljiva od vanjske, jer se količina izgubljenog prostora određuje parametrima alokatora memorije (koliko moraju biti dodijeljeni blokovi), što je konstanta. Uz to, količina ukupne memorije izgubljene unutarnjom fragmentacijom obično je manja od one izgubljene vanjskom fragmentacijom, iako se postupno može akumulirati. S druge strane, teže je predvidjeti vanjsku fragmentaciju jer se u većini slučajeva nekoliko procesa redovito pokreće i zaustavlja u sustavu, a blokovi memorije koji se koriste različito dugo vremena oslobađaju se drugačijim redoslijedom nego što su bili ispunjeni, ostavljajući praznine u dostupnoj memoriji.
Borba protiv fragmentacije radi poboljšane izvedbe
Što se tiče optimizacije RAM-a, jedino korisno rješenje je ponovno pokretanje sustava, što očisti velik dio memorije koju koriste dugotrajni programi i daje računalu novi početak za dodjelu memorije. Alati koji tvrde da defragmentiraju RAM zavaraju, jer upravitelj virtualne memorije na modernim računalima radi na stalnoj optimizaciji upotrebe RAM-a. Međutim, za vaš tvrdi disk možda će biti potrebna određena defragmentacija kako bi se maksimalizirale performanse sustava. Ako koristite Windows Vista ili novije verzije, sustav automatski povremeno defragmentira prostor na vašem tvrdom disku. Ako primijetite sporije performanse sustava i želite sami pokrenuti defragmentator, možete ručno pokrenuti postupak klikom na "Start", a zatim na "Svi programi | Pribor | Alati sustava | Defragmentator diska". Na kraju kliknite "Defragmentiraj odmah". Postupak može trajati od nekoliko minuta do nekoliko sati, ovisno o tome koliko je tvrdi disk fragmentiran, ali dobra vijest je da računalo možete koristiti dok je program za defragmentaciju diska pokrenut.
Problem fragmentacije ne odnosi se jednako na sve operativne sustave. Za Mac računala defragmentiranje nije potrebno jer Mac OS X automatski optimizira prostor na disku kada se datoteke zapisuju. Linux strojevi također ne zahtijevaju redovito defragmentiranje jer dodijeljuju memoriju u raštrkanom obliku umjesto u susjednoj, dajući datotekama prostor za proširenje. Korisnici Linuxa koji primijete pad performansi sustava trebali bi razmisliti o povećanju veličine tvrdog diska. Konačno, nikada ne biste trebali defragmentirati SSD pogon (kao što je USB pogon), jer defragmentacija zapravo može skratiti korisni vijek SSD pogona.