Home

geheugenallocaties

Geheugenallocaties is het proces waarbij een programma tijdens de uitvoering geheugen reserveert en toewijst voor variabelen, datastructuren en objecten. In veel talen bestaat er onderscheid tussen statische of compile-tijdtoewijzing (bijv. globale variabelen) en automatische toewijzing op de stack, en dynamische toewijzing op de heap die op verzoek van de code gebeurt. De toegewezen geheugenruimte maakt deel uit van de virtuele adressruimte van het proces en wordt beheerd door de runtime en de besturingssysteemkernel.

Toewijzing gebeurt via allocators. De runtime en de kernel kiezen vaak een specifieke allocatietechniek: first-fit, best-fit

Een belangrijk aspect is fragmentatie: externe fragmentatie ontstaat wanneer vrije blokken verspreid raken en er geen

Organisaties kiezen vaak voor gespecialiseerde geheugenpools of aangepaste allocators per type object om efficiëntie en voorspelbare

of
worst-fit;
buddy-system,
slab
allocators
of
garbage
collection.
In
C
en
C++
gebeurt
dynamische
toewijzing
meestal
met
malloc/free
of
operator
new/delete,
waarbij
de
programmeur
expliciet
de
ruimte
vrijmaakt.
In
talen
met
garbage
collection
(Java,
C#,
JavaScript)
wordt
geheugen
automatisch
teruggegeven
zodra
er
geen
referenties
meer
zijn.
Handmatig
beheer
kan
leiden
tot
geheugenlekken
en
dubbele
vrijgave,
terwijl
GC
de
programmeerlast
verlaagt
maar
soms
prestaties
beïnvloedt.
grote
contig
blok
beschikbaar
is,
interne
fragmentatie
wanneer
vrije
blokken
te
groot
zijn
voor
de
gevraagde
toewijzing.
Allocatoren
proberen
dit
te
beperken
met
uitlijning
op
woordgrenzen
en
specifieke
structuren
(arena’s,
pools).
Lokale
toewijzingen
beïnvloeden
cache-
en
TLB-prestaties
en
kunnen
de
efficiëntie
van
programma's
aanzienlijk
bepalen.
prestaties
te
vergroten.
Bij
interop
tussen
talen
en
systemen
is
beheersing
van
geheugen
en
gelijktijdigheid
belangrijk.
Een
goed
begrip
van
geheugenallocaties
is
essentieel
voor
resource
management
en
systeemefficiëntie.