Фрагментацията на паметта възниква, когато системата съдържа памет, която е технически безплатна, но която компютърът не може да използва. Разпределителят на паметта, който присвоява необходимата памет на различни задачи, разделя и разпределя блокове памет, както се изискват от програмите; когато данните се изтрият, повече блокове памет се освобождават в системата и се добавят обратно към пула от налична памет. Когато действията на разпределителя или възстановяването на предварително заети сегменти на паметта водят до блокове или дори байтове памет, които са твърде малки или твърде изолирани, за да се използват от пула памет, е настъпила фрагментация. Фрагментацията може да отнеме значителна хапка от свободната памет на компютъра и често е причина за разочароващи съобщения за грешки при липса на памет.
Вътрешна фрагментация
Вътрешна фрагментация възниква, когато разпределителят на паметта оставя празно място празно вътре в блок памет, който е бил разпределен за клиент. Това обикновено се случва, защото дизайнът на процесора предвижда, че паметта трябва да бъде нарязана на блокове с определени размери - например, може да се наложи блоковете да бъдат разделени равномерно на четири, осем или 16 байта. Когато това се случи, на клиент, който се нуждае от 57 байта памет например, може да бъде присвоен блок, който съдържа 60 байта или дори 64. Допълнителните байтове, от които клиентът не се нуждае, отиват на вятъра и с течение на времето тези малки парченца от неизползваната памет може да се натрупа и да създаде големи количества памет, които не могат да бъдат използвани от разпределителя. Тъй като всички тези безполезни байтове са вътре в по-големи блокове памет, фрагментацията се счита за вътрешна.
Външна фрагментация
Външната фрагментация се случва, когато разпределителят на паметта оставя секции от неизползвани блокове памет между части от разпределената памет. Например, ако няколко блока памет са разпределени в непрекъсната линия, но един от средните блокове в реда е освободен (може би защото процесът, който е използвал този блок памет е спрял да работи), свободният блок е фрагментиран. Блокът все още е достъпен за използване от разпределителя по-късно, ако има нужда от памет, която се вписва в този блок, но блокът вече е неизползваем за по-големи нужди от паметта. Не може да се върне обратно с общата свободна памет, налична на системата, тъй като общата памет трябва да е непрекъсната, за да може да се използва за по-големи задачи. По този начин цели раздели на свободната памет могат да се окажат изолирани от цялото, които често са твърде малки за значително използване, което създава цялостно намаляване на свободната памет, което с течение на времето може да доведе до липса на налична памет за ключови задачи.
Раздробяването може да означава големи проблеми за системите
Фрагментацията може да се превърне в проблем, защото се натрупва с течение на времето, създавайки малки и безполезни блокове памет и ограничавайки обема на наличната свободна памет на компютъра. С напредването си фрагментацията може да доведе до забавяне и забавяне на работата на системата в краткосрочен план; в дългосрочен план фрагментацията може да съкрати живота на компютър или сървър средно с 30 процента. От двата типа фрагментация вътрешното е по-предсказуемо от външното, тъй като количеството загубено пространство се определя от параметрите на разпределителя на паметта (колко големи трябва да бъдат разпределените блокове), което е константа. Освен това количеството на общата памет, загубена от вътрешната фрагментация, обикновено е по-малко от загубеното при външната фрагментация, въпреки че може постепенно да се натрупва. Външната фрагментация, от друга страна, е по-трудно да се предскаже, тъй като в повечето случаи няколко процеса редовно стартират и спират в системата и блоковете памет, които се използват за различен период от време, се освобождават в различен ред, отколкото са били запълнени, оставяйки пропуски в наличната памет.
Борба с фрагментацията за подобрена производителност
Що се отнася до оптимизирането на RAM, единственото полезно решение е да рестартирате системата, която изчиства голяма част от паметта, използвана от продължителни програми и дава на компютъра нов старт за разпределяне на паметта. Инструментите, които твърдят, че дефрагментират RAM, са подвеждащи, тъй като мениджърът на виртуална памет в съвременните компютри работи за постоянно оптимизиране на използването на RAM. За вашия твърд диск обаче може да се наложи някои дефрагментиране, за да се увеличи максимално производителността на системата. Ако стартирате Windows Vista или по-нови версии, системата автоматично дефрагментира периодично мястото на вашия твърд диск вместо вас. Ако забележите по-ниска производителност на системата и искате сами да стартирате дефрагментатора, можете ръчно да стартирате процеса, като щракнете върху „Старт“, след това върху „Всички програми | Аксесоари | Системни инструменти | Дефрагментиране на диска“. Накрая кликнете върху „Дефрагментиране сега“. Процесът може да отнеме от минути до часове в зависимост от това колко фрагментиран е твърдият ви диск, но добрата новина е, че можете да използвате компютъра си, докато работи дефрагментирането на диска.
Проблемът с фрагментацията не се отнася еднакво за всички операционни системи. За компютри Mac дефрагментирането не е необходимо, защото Mac OS X автоматично оптимизира дисковото пространство, когато се записват файлове. Linux машините също не изискват редовно дефрагментиране, тъй като те присвояват памет в разпръснат формат, вместо в съседна, което дава възможност на файловете да се разширяват. Потребителите на Linux, които виждат спад в производителността на системата, трябва да обмислят увеличаване на размера на техния твърд диск. И накрая, никога не трябва да дефрагментирате SSD устройство (като например USB устройство), тъй като дефрагментирането всъщност може да съкрати използваемия живот на SSD устройствата.