Geheugenfragmentatie treedt op wanneer een systeem geheugen bevat dat technisch vrij is, maar dat de computer niet kan gebruiken. De geheugentoewijzer, die het benodigde geheugen aan verschillende taken toewijst, verdeelt en wijst geheugenblokken toe zoals vereist door programma's; wanneer gegevens worden verwijderd, komen er meer geheugenblokken vrij in het systeem en worden ze weer toegevoegd aan de pool van beschikbaar geheugen. Wanneer de acties van de allocator of het herstel van eerder bezette geheugensegmenten leiden tot blokken of zelfs bytes geheugen die te klein of te geïsoleerd zijn om door de geheugenpool te worden gebruikt, is er fragmentatie opgetreden. Fragmentatie kan een flinke hap uit het vrije geheugen van een computer halen en is vaak de oorzaak van frustrerende foutmeldingen over onvoldoende geheugen.
Interne fragmentatie
Interne fragmentatie treedt op wanneer de geheugentoewijzer extra ruimte leeg laat in een geheugenblok dat is toegewezen aan een client. Dit gebeurt meestal omdat het ontwerp van de processor bepaalt dat het geheugen moet worden opgedeeld in blokken van bepaalde groottes - het kan bijvoorbeeld nodig zijn dat blokken gelijkmatig worden gedeeld door vier, acht of 16 bytes. Wanneer dit gebeurt, kan aan een client die bijvoorbeeld 57 bytes geheugen nodig heeft, een blok worden toegewezen dat 60 bytes of zelfs 64 bytes bevat. De extra bytes die de cliënt niet nodig heeft, gaan verloren en na verloop van tijd worden deze kleine stukjes van ongebruikt geheugen kan zich ophopen en grote hoeveelheden geheugen creëren die niet door de allocator kunnen worden gebruikt. Omdat al deze nutteloze bytes zich in grotere geheugenblokken bevinden, wordt de fragmentatie als intern beschouwd.
Externe fragmentatie
Externe fragmentatie vindt plaats wanneer de geheugentoewijzer delen van ongebruikte geheugenblokken tussen delen van het toegewezen geheugen laat. Als er bijvoorbeeld meerdere geheugenblokken in een doorlopende regel zijn toegewezen, maar een van de middelste blokken in de regel wordt vrijgemaakt (misschien omdat het proces dat dat geheugenblok gebruikte niet meer actief was), is het vrije blok gefragmenteerd. Het blok is later nog steeds beschikbaar voor gebruik door de allocator als er behoefte is aan geheugen dat in dat blok past, maar het blok is nu onbruikbaar voor grotere geheugenbehoeften. Het kan niet worden samengevoegd met het totale vrije geheugen dat beschikbaar is voor het systeem, omdat het totale geheugen aaneengesloten moet zijn om bruikbaar te zijn voor grotere taken. Op deze manier kunnen hele delen van vrij geheugen geïsoleerd raken van het geheel, die vaak te klein zijn voor significant gebruik, wat leidt tot een algehele vermindering van vrij geheugen die na verloop van tijd kan leiden tot een gebrek aan beschikbaar geheugen voor belangrijke taken.
Fragmentatie kan grote problemen voor systemen betekenen
Fragmentatie kan een probleem worden omdat het zich in de loop van de tijd opbouwt, waardoor kleine en nutteloze geheugenblokken ontstaan en de hoeveelheid beschikbaar vrij geheugen van een computer wordt beperkt. Naarmate het vordert, kan fragmentatie ervoor zorgen dat de systeemprestaties op korte termijn traag en traag worden; op de lange termijn kan fragmentatie de levensduur van een computer of server gemiddeld met 30 procent verkorten. Van de twee soorten fragmentatie is intern voorspelbaarder dan extern, omdat de hoeveelheid verspilde ruimte wordt bepaald door de parameters van de geheugentoewijzer (hoe groot de toegewezen blokken moeten zijn), wat een constante is. Bovendien is de hoeveelheid geheugen die verloren gaat door interne fragmentatie meestal minder dan wat verloren gaat door externe fragmentatie, hoewel het zich geleidelijk kan ophopen. Externe fragmentatie daarentegen is moeilijker te voorspellen omdat in de meeste gevallen meerdere processen regelmatig starten en stoppen in het systeem en geheugenblokken die voor verschillende tijdsduur worden gebruikt, in een andere volgorde worden vrijgemaakt dan waarin ze waren gevuld, gaten in het beschikbare geheugen achterlaten.
Fragmentatie bestrijden voor betere prestaties
Als het gaat om het optimaliseren van RAM, is de enige nuttige oplossing om het systeem opnieuw op te starten, waardoor een groot deel van het geheugen dat wordt gebruikt door langlopende programma's wordt gewist en de computer een nieuwe start krijgt voor het toewijzen van geheugen. Tools die beweren RAM te defragmenteren zijn misleidend, omdat de virtuele geheugenbeheerder in moderne computers werkt om het RAM-gebruik constant te optimaliseren. Voor uw harde schijf kan echter enige defragmentatie vereist zijn om de systeemprestaties te maximaliseren. Als u Windows Vista of latere versies gebruikt, defragmenteert het systeem uw hardeschijfruimte automatisch periodiek voor u. Als u tragere systeemprestaties bemerkt en de defragmentatie zelf wilt uitvoeren, kunt u het proces handmatig starten door op "Start" en vervolgens op "Alle programma's | Accessoires | Systeemwerkset | Schijfdefragmentatie" te klikken. Klik ten slotte op 'Nu defragmenteren'. Het proces kan van minuten tot uren duren, afhankelijk van hoe gefragmenteerd uw harde schijf is, maar het goede nieuws is dat u uw computer kunt gebruiken terwijl Schijfdefragmentatie actief is.
Het probleem van fragmentatie geldt niet voor alle besturingssystemen in gelijke mate. Voor Mac-computers is defragmenteren niet nodig omdat Mac OS X automatisch de schijfruimte optimaliseert wanneer bestanden worden geschreven. Linux-machines hoeven ook niet regelmatig te worden gedefragmenteerd omdat ze geheugen in een verspreid formaat toewijzen in plaats van een aaneengesloten formaat, waardoor de bestanden ruimte hebben om uit te breiden. Linux-gebruikers die een daling van de systeemprestaties zien, moeten overwegen om de grootte van hun harde schijf te vergroten. Ten slotte moet u een solid-state opslagstation (zoals een USB-station) nooit defragmenteren, aangezien defragmentatie de bruikbare levensduur van solid-state schijven kan verkorten.